2011-10-11 44 views
1

我有類似:PHP:如何爲一個繼承另一個具有自己接口的類的擴展接口?

interface IProduct { } 
class Product implements IProduct { } 
class SpecificProduct extends Product { } 

我需要有一個接口,擴展IProduct,我SpecificProduct。 可我只是這樣做:

interface ISpecificProduct { } 
class SpecificProduct extends Product implements ISpecificProduct { } 

還是會覆蓋IProduct接口?

回答

1

這工作在PHP中,這樣一來,剛剛經歷:

class SpecificProduct因爲它extends Productimplements IProduct了。它同樣也是implements ISpecificProduct,它有兩個接口。

SpecificProduct現在有兩個接口則:

  1. IProduct
  2. ISpecificProduct
0

是的,你可以做到這一點,不,它不會「覆蓋」IProduct,它增加了它。

如果你正在某個地方使用ISpecificProduct接口,並想知道在IProduct方法,ISpecificProduct還可以擴展IProduct

interface ISpecificProduct extends IProduct 

在這種情況下,從IProduct方法簽名的SpecificProduct收益知識有兩種方式。

查看PHP documentation on interfaces瞭解更多信息。請注意,如果每個具體類都有匹配的接口,那麼在對象設計中可能會出現效率低下或不必要的情況。

+0

如果每個類實現一個接口有什麼不好? – hakre

+0

@hakre這不是我說的不好 - 壞的是每個接口只有一個實現,每個實現都需要一個接口。這樣的設計沒有任何好處。 – Nicole

+0

我只是問,謝謝你的反饋。在內部測試中,即使基本代碼每個接口只有一個類(首先),通常也會有大量可從接口獲益的假對象。所以也許這是需要考慮的事情。 – hakre

相關問題