爲什麼「數據成員」應該聲明爲「受保護」?可能的好處是什麼?受保護的數據成員
Q
受保護的數據成員
1
A
回答
0
protected
僅僅意味着子類都能夠看到該成員,但該成員不是公共API對象的一部分。
重新提出這個問題;這取決於你「數據成員」的含義。如果你的意思是領域,那麼國際海事組織他們應該不是是。製造某些狀態(屬性)protected
,如果子類將需要該信息(特別是方法),但它不是外部世界所必需的。
然而,一個更好的例子是protected virtual
,其中繼承者能夠改變一個否則私人(對外界)成員的實現。經典的例子是:
protected virtual OnSomeMemberChanging(...) {}
protected virtual OnSomeMemberChanged(...) {}
那裏繼承者現在可以通過使用override
改變實現(通常但並不總是在某些時候調用base.Whatever()
調用原來實行的反應(甚至塊)更改關鍵值好)。
3
受保護的成員可以通過子類訪問,如果您將其聲明爲私有,則不屬於這種情況。
你聲明事物是隱私的或者是隱藏它們的,因此只有外部世界應該使用的相關事物纔會暴露。
如果你想知道爲什麼你想隱藏來自外部世界的成員,你應該得到一本關於面向對象的概率的書,因爲這些是基本概念。
0
+0
不只是直接;所有的後代。也;你不能從一個結構繼承,所以是沒有意義的。 – 2010-09-28 07:31:04
相關問題
- 1. 受保護的數據成員和數據函數
- 2. 免費訪問受保護的成員
- 3. 如何讀出受保護的成員
- 4. 受保護的成員可見用戶
- 5. 使用受保護的成員
- 6. 無法訪問受保護的成員
- 7. 訪問受保護的成員
- 8. 錯誤訪問受保護的成員
- 9. 無法訪問受保護的成員?
- 10. 如何訪問受保護的成員
- 11. 訪問klarna API的受保護成員
- 12. 一類受保護成員的思考
- 13. 受保護成員的範圍
- 14. 密封類中的受保護成員
- 15. 訪問受保護的成員
- 16. 受保護的內部成員
- 17. 受保護成員的繼承
- 18. 基類中的通用受保護數據成員?
- 19. clang不識別受保護的數據成員
- 20. 從派生類訪問基類的受保護數據成員
- 21. 從模板化(靜態)成員函數訪問受保護的成員
- 22. scala覆蓋受保護的成員函數
- 23. 從派生類構造函數初始化受保護的數據成員
- 24. 自動完成列表中的PHPDoc/PhpStorm受保護成員
- 25. 受保護數據成員的替代方案,具體案例研究
- 26. 如何讓班級成員受到保護並保持內部?
- 27. C++:允許訪問受保護的類的成員,而不是私人成員
- 28. 派生類不能使用成員指針受保護的基類成員
- 29. 訪問派生類中的類的受保護成員
- 30. 未受保護的訪問成員的財產得到
謝謝,但這是唯一的好處。 – user 2010-09-28 07:30:48
這是關於保護和項目整潔和可維護性。它與表演或任何事物無關。你可以讓所有的事情公開並且快樂(但是這樣會更難以維持,而且很不專業)。 – Palantir 2010-09-28 07:33:16