我有一些像:
interface IProduct { }
class Product implements IProduct { }
class SpecificProduct extends Product { }
我需要有一个接口,扩展IProduct,用于我的SpecificProduct。我能不能这样写:
interface ISpecificProduct { }
class SpecificProduct extends Product implements ISpecificProduct { }
还是会覆盖IProduct接口?
这在PHP中是这样的,只需执行:
class SpecificProduct
,因为它是extends Product
,它已经是implements IProduct
了。与implements ISpecificProduct
一样,它具有两个接口。
SpecificProduct
现在有两个接口:
-
IProduct
-
ISpecificProduct
是的,你可以这样做,不,它不会"覆盖" IProduct
,它会添加。
如果您在某处使用ISpecificProduct
接口并想了解IProduct
中的方法,ISpecificProduct
也可以扩展IProduct
:
interface ISpecificProduct extends IProduct
在这种情况下,SpecificProduct
通过两种方式从IProduct
获得方法签名的知识。
有关接口的更多信息,请参阅PHP文档。
作为旁注,如果你为每个具体类都有一个匹配的接口,那么在你的对象设计中可能会有一些低效或不必要的事情发生。