我讀過很多文章,「接口是類的合同」。一個具有私有,受保護和公共可見性的類,那麼爲什麼接口只聲明公共方法。接口不能聲明私有/受保護的函數
1
A
回答
2
接口描述如何與對象(公共方法)進行交互。
接口必須對內部對象結構(私有或受保護的方法)一無所知
和接口不關心對象背後發生了什麼。
私有和受保護的方法可能因低層實現而異。
例如,我們有接口SocialMedia
interface SocialMedia
{
public function share();
}
而這個接口,我們不關心(而不必關心)有關對象將如何準確地共享信息裏面,我們只知道信息會共享。
而且我們有2類:
class Twitter implements SocialMedia
{
private function tweet()
{
}
public function share()
{
return $this->tweet();
}
}
class Facebook implements SocialMedia
{
private function post()
{
}
public function share()
{
return $this->post();
}
}
正如你可以看到這個類實現SocialMedia
,我們知道如何與他們進行互動 - 這究竟是接口的意圖。
此外,我們有私有方法tweet
爲類Twitter
和post
爲Facebook
此方法是特定類內的低層實現,所以我們不能在接口內部描述這樣的方法。
+0
+1所以基本上你使用'share'就像get-method一樣輸出私有屬性/方法。我一直在使用接口來實現語義。 – Thielicious
2
相關問題
- 1. 是否可以在接口中聲明一個私有函數?
- 2. 受保護的與私有的析構函數
- 3. 保持API調用私有/受保護
- 4. C++調用通用基類的私有/受保護函數
- 5. 序列圖中的私有/受保護函數
- 6. 受保護的和私有的方法
- 7. Ruby中的私有/受保護塊?
- 8. python中的私有公共受保護訪問說明符
- 9. 使用make_shared與受保護的構造函數+抽象接口
- 10. 不能在構造函數中聲明私有變量?
- 11. 爲什麼類或接口不能接收私有或受保護的訪問修飾符?
- 12. 受保護/私有繼承鑄造
- 13. C++類(公共,私有和受保護)
- 14. 訪問受保護或私有屬性
- 15. 接口中的受保護方法
- 16. 聲明迭代函數的接口
- 17. 私有和受保護的OOP有什麼不同?
- 18. SetDelayed :: Write ...在模塊中受到遞歸聲明的函數的保護
- 19. 方法聲明中的受保護參數?
- 20. 保護COM接口免受例外
- 21. 接口不能聲明類型
- 22. JS:聲明私有函數的效果不同
- 23. 私人和受保護的純虛函數之間是否有區別?
- 24. 確保私有/受保護方法的輸入?
- 25. 將屬性聲明爲受保護的更好的方法
- 26. 什麼是沒有公共私有或保護聲明的變量?
- 27. Scala中的受保護函數
- 28. 受保護的內部構造函數
- 29. 部分受保護的接口,但沒有抽象類
- 30. 接口聲明
它定義了一個始終公開的接口。如何在內部工作是無關緊要的。 –
可能重複的[是否有可能具有私有/受保護方法的接口?](https://stackoverflow.com/questions/1876516/is-it-possible-to-have-an-interface-that-has -private-protected-methods) – Duncanmoo