我有类似的东西:
interface IProduct { }
class Product implements IProduct { }
class SpecificProduct extends Product { }
我需要为我的SpecificProduct设置一个扩展IProduct的接口。 我可以这样做:
interface ISpecificProduct { }
class SpecificProduct extends Product implements ISpecificProduct { }
还是会覆盖IProduct接口?
答案 0 :(得分:1)
这适用于PHP,这样,只需通过:
class SpecificProduct
因为extends Product
已经implements IProduct
。因为它implements ISpecificProduct
,它有两个接口。
SpecificProduct
现在有两个接口:
IProduct
ISpecificProduct
答案 1 :(得分:0)
是的,你可以这样做,不,它不会“覆盖”IProduct
,它会增加它。
如果您在某个地方使用ISpecificProduct
界面,并希望了解IProduct
中的方法,ISpecificProduct
也可以扩展IProduct
:
interface ISpecificProduct extends IProduct
在这种情况下,SpecificProduct
以两种方式从IProduct
获得方法签名的知识。
有关详细信息,请参阅PHP documentation on interfaces。
作为旁注,如果每个具体类都有匹配的接口,那么在对象设计中可能会出现效率低下或不必要的事情。