19 php abstract-class interface traits
据我所知,一个抽象类说"任何使用我的东西都将使用这些方法和属性",接口说"任何使用我的东西都必须有这些方法和属性",并且特征说"任何使用我的东西也会有这些方法"和属性".
现在,我的问题是,如果在使用接口和特征时获得等效的抽象类,为什么还有抽象类?
如果我错了,界面和特征不等同于抽象类,你能解释一下为什么不是这样吗?
sak*_*zai 35
我认为在如何以及何时使用它们方面存在一些哲学上的差异.
你说 :
如果你专注于你自己的措辞,这是有道理的.
抽象类是在现实中定义的东西都是抽象的如汽车是一个抽象的东西,直到或者除非其物化在汽车或自行车的形式.接口既不定义它也不定义特征.
接口补充了类继承功能,其中一个类继承自多个类(只有某些语言提供多重继承,例如C/C++).接口,如名称所示,侧重于INTERFACE,而不是实现它的类中接口方法的实现.它使类PLUG&PLAYABLE所以每个人都应该遵循标准.如果您在OOP上进一步了解工厂和适配器模式,您将理解它.
特征具有未绑定到特定类的实现/功能.相反,它可以在不同的类中找到.它就像遗传基因一样,在父母身上保持沉默,只出现在某些孩子身上.或者是简洁的选择性继承,但不限于单个类.因此它提供了一种更好的代码重用方式
编辑
接口+特性!=抽象类,因为当使用特征继承时selective
,您选择要使用的特定特征,而使用Abstract Class
继承是强制性的或由父类决定,您没有自由!