當類實現接口時,接口成員的類型修飾符應該是公共的。爲什麼會有這樣的限制?用於接口的公共類型修飾符
回答
實現接口方法有兩種方式;第一個是隱含的實現 - 它假定公開API暴露了接口方法,並且是您毫無疑問看到的。
但是,您也可以使用明確實現:
void IDisposable.Dispose() {
// clean up
}
是一個簡單的例子;這是私人的,但滿足界面。顯式實現總是優先於公共API上的相似命名方法。
實際上,顯式實現通常是必需的,例如實現IEnumerable<T>
--因爲存在兩個衝突的方法;以下是常見的:
// public API will be used for implicit IEnumerable<T>.GetEnumerator()
public IEnumerator<T> GetEnumerator() { ... do work ... }
// explicit implementation of IEnumerable.GetEnumerator()
IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); }
所以:如果你不想公開成員;使用明確的實現。
接口定義其他對象如何與實現該接口的類型的對象通信;由於其他對象只能與其他類型的公共屬性和方法進行交互,因此接口必須將這些屬性和方法定義爲公共屬性。
除了他們不需要公開...他們可以是明確的 – 2011-05-03 10:46:05
雖然在技術上我同意,我確實考慮一個明確的接口來定義一個類型的公共契約;事實上,一個類型實現該接口是其公共定義的一部分,因此獲取這些接口成員是容易和保證/需要的。 Private定義了一個類型封裝和隱藏的內容,而一個接口實際上不屬於這個類型。 – 2011-05-03 10:55:11
可以說一個接口可以有私人成員。當一個類繼承這個接口時,這個類將永遠不能訪問私有成員。該類永遠不能實現私有成員,程序永遠不會被編譯。
- 1. WPF控件的公共類修飾符
- 2. 「修飾符公共對此項無效」在接口方法
- 3. Typescript中公共類訪問修飾符的用途是什麼?
- 4. 公共和私人訪問修飾符
- 5. Typescript類:明確的「公共」修飾符是最佳做法嗎?
- 6. 如何限制引用庫中的公共訪問修飾符?
- 7. 的Magento - Magento的用於核機型的公共接口文檔
- 8. 爲什麼不能將OUT通用修飾符應用於類以及接口?
- 9. 公共構造不帶任何修飾
- 10. C#入口點類修飾符
- 11. 公共修飾符在Java線程運行的好處()
- 12. Java類修飾符
- 13. 用新的修飾符隱藏基類公用方法
- 14. 的Java公共接口和公共類在同一個文件
- 15. c# - ref修飾符...參考類型
- 16. 關於@login_required修飾符和重定向類型的問題
- 17. 私有和公共java訪問修飾符基礎知識
- 18. Java類的修飾符
- 19. 修飾符公衆並不適用於這個項目
- 20. Android的公共接口
- 21. C#成員修飾符必須先於成員類型
- 22. Java:反射調用實現公共接口的非公共類中的方法
- 23. 類訪問修飾符
- 24. C#類/方法修飾符
- 25. 類型修飾符不允許類型「幾何」
- 26. 訪問修飾符錯誤 - 儘管類是公開的
- 27. 從EntityFramework的DbContext公開接口類型
- 28. 接口和公共方法
- 29. 什麼是公共接口?
- 30. 我修飾符不適用於外語?
mempublic?另外:「類型修飾符」,你的意思是「可達性修飾符」? – 2011-05-03 10:47:22
接口成員是隱式公開的。不是執行。 – 2011-05-03 12:22:31