看表格看不懂的,请回顾一下前三篇文章,这是一份总结表。通过对比更直观。 - class interface trait 目的 封装一类对象的属性和行为。 抽象一类对象的行为准则,而不关注其具体实现。 解决单继承的限制。(历史解决方法是使用混入类(mixin)) class class cla
看表格看不懂的,请回顾一下前三篇文章,这是一份总结表。通过对比更直观。
      -          class          interface          trait    
      目的          封装一类对象的属性和行为。           抽象一类对象的行为准则,而不关注其具体实现。           解决单继承的限制。(历史解决方法是使用混入类(mixin))     
      class          class classa extends classb           class class implements interface           class class {
use trait;
}     
      interface          -           interface1 extends interface2           -     
      trait          -           -           trait trait1 {
use trait2;
}     
      *注:以上是三者可使用的关系,以下是其具体区别!     
      abstract          类前(抽象类),方法前(抽象方法)           -           方法前(抽象方法)     
      final          类前(不可继承),方法前(不可重写)           -           方法前(不可重写)     
      const          有类常量           有接口常量           -     
      static          静态变量,静态方法           静态方法           静态变量,静态方法     
      访问控制
public
protected
private          继承可改变访问控制
实现接口只能用public
use trait可以用as改变访问控制。           -           use trait可以用as改变访问控制     
      同名变量          覆盖(extends class)
报错(use trait)           -           报错(use trait)     
      同名方法          覆盖(extends)
报错(use trait) 可用insteadof或as解决           报redeclare错(extends interface)           报错(use trait) 可用insteadof或as解决     
      *注:静态成员变量/函数与普通成员变量/函数的命名不可一样,不然会报错。
( 完 )
版权所有:老白经 转载请保留来源信息。  >
   
 
   