PHP:如何为继承自另一个具有自己接口的类的类提供扩展接口


PHP : how to have a extended interface for a class that inherite from another class with its own interface?

我有一些像:

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现在有两个接口:

  1. IProduct
  2. ISpecificProduct

是的,你可以这样做,不,它不会"覆盖" IProduct,它会添加。

如果您在某处使用ISpecificProduct接口并想了解IProduct中的方法,ISpecificProduct也可以扩展IProduct:

interface ISpecificProduct extends IProduct

在这种情况下,SpecificProduct通过两种方式从IProduct获得方法签名的知识。

有关接口的更多信息,请参阅PHP文档。


作为旁注,如果你为每个具体类都有一个匹配的接口,那么在你的对象设计中可能会有一些低效或不必要的事情发生。