首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >既然可以使用接口和特征,为什么PHP还要有抽象类呢?

既然可以使用接口和特征,为什么PHP还要有抽象类呢?
EN

Stack Overflow用户
提问于 2014-01-01 13:59:15
回答 1查看 5.5K关注 0票数 19

今天早些时候,我研究了PHP的abstract classesinterfacestraits

据我所知,抽象类表示“任何使用me的对象都将使用这些方法和属性”,接口表示“任何使用me的对象都必须具有这些方法和属性”,而特征表示“任何使用me的对象都将具有这些方法和属性”。

现在,我的问题是,如果你在使用接口和特征时得到了抽象类的等价物,为什么会有抽象类呢?

如果我错了,接口和特征并不等同于抽象类,你能解释一下为什么不是这样吗?

EN

回答 1

Stack Overflow用户

发布于 2014-01-01 14:36:39

当您使用特征时,您只需要一个给定的类来实现某些方法。

您不会继承任何属性或方法,也不会强制对象进入任何继承树。

因此,你可以有几个完全不相关的类使用相同的特征,只是为了保证这些类的任何对象都将支持给定的方法。

这就是PHP如何处理著名的Mixin。基本上,Mixin只是一个可以与其他几个类共享共同特征的类。特征允许对类的方法施加约束,而与这些类是否相互继承的方式无关。

当你想让一个类将两个父类的行为结合起来时,你可以使用特征来获得相同的结果,而不是麻烦地去初始化一堆不想要的其他东西,而不是必须进行多个继承到愚蠢的地步。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20865988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档