我知道封裝的意思就像一個對象不應該直接訪問不同對象的成員......但我想它涉及到公共領域?我認爲公共方法不會破壞封裝..?我在這裏只是不清楚,會爲任何解釋而感到高興。封裝..幾乎可以精確描述?
6
A
回答
1
封裝並不意味着應該有沒有訪問成員。這意味着你應該只允許訪問應該使用的成員,基本上限制訪問而不是訪問。
通過公開某些東西,您允許訪問,通過將其設置爲私人而不允許訪問。
本文將進入更深入,以及各種訪問修飾符:
http://www.csharp-station.com/Tutorials/lesson19.aspx
在這篇文章中,他們給出一個很好的例子:
using System;
class BankAccountProtected
{
public void CloseAccount()
{
ApplyPenalties();
CalculateFinalInterest();
DeleteAccountFromDB();
}
protected virtual void ApplyPenalties()
{
// deduct from account
}
protected virtual void CalculateFinalInterest()
{
// add to account
}
protected virtual void DeleteAccountFromDB()
{
// send notification to data entry personnel
}
}
當一個程序員想要關閉一個他們不應該擔心進入的各個步驟:
- 個ApplyPenalties
- CalculateFinalInterest
- DeleteAccountFromDB
他們應該只是說,他們希望它關閉,並且將採取一切必要步驟。這就是爲什麼CloseAccount
是公開的,其他的不是。
11
封裝是您通過驅動你的汽車:
- 轉動點火鑰匙
- 轉向輪
- 改變齒輪(如果沒有自動)
- 添加燃料
而不是:
- 點燃燃料在汽缸
- 摩擦-ING輪胎和地面
- 等等...
暴露(使public
)什麼和隱藏(使private
)HOW。現在,你在封裝。
:)
1
我覺得最有幫助的思考就像人們用不同的工作類別。例如,如果我是項目經理,而且你是開發人員,那麼我與你的公共合同就是我將分配任務給你。我如何確定優先級?這是我私人的一個細節;你作爲一名開發人員並不需要知道你的工作。
因此,在考慮封裝時,將一個類的知識分爲公共契約及其實現細節。第一個應該被暴露 - 無論是通過公共財產,方法還是其他 - 而第二個應該被封裝在課堂內部,沒有辦法讓外人知道。
1
封裝隱藏了對象實現的細節,因此在特定實現上沒有外部依賴關係。 拍下from msdn blog。
看看這個CodeProject post。
相關問題
- 1. Android JNI是否可以封裝封裝?
- 2. 「幾乎可以整除」
- 3. RDF是否確實缺乏精確描述的含義?
- 4. 建議,以確保封裝
- 5. 爲OOP描述公共封裝的目的是什麼?
- 6. OpenCV'幾乎'封閉的輪廓
- 7. 可變元描述
- 8. 強制描述Widget包裝
- 9. 是否可以找到XToolkit的描述?
- 10. 是否可以重新定義「描述」?
- 11. 可以描述一個字符串
- 12. Date.parse 2.0幾乎可以理解它
- 13. UpdateListItems ...幾乎可以正常工作
- 14. Azure Pub/Sub幾乎可以工作
- 15. R- findCorrelation()(尖封裝)設置時精確=真
- 16. 封裝,數據抽象和數據隱藏的精確解釋
- 17. OnInit以外的描述
- 18. 故事板可以封裝嗎?
- 19. 封裝可解的
- 20. 描述
- 21. 正確應用封裝
- 22. 等待可讀文件描述符和可寫文件描述符
- 23. 用於封裝數據的JavaScript封閉可以繞過?
- 24. 在eclipse中安裝環境描述
- 25. 段描述符與門描述符
- 26. 類方法:描述「#my_class_method」或描述「#self.my_class_method」?
- 27. Dozer將描述描述爲代碼
- 28. NSObject描述和調試描述
- 29. 如果陳述似乎不正確javascript
- 30. 是否可以描述一個不可能實現的功能?
呃,你(經理)正在向開發人員展示你的方法...是不是相反,這些東西應該工作? :) – 2011-05-13 12:43:30