2012-08-08 59 views
0

爲什麼我們使用private關鍵字?我知道它限制了對var或方法的訪問,但爲什麼我們必須限制訪問?爲什麼我們不得不使用私人?在C + +和Java?

+2

閱讀關於封裝及其好處。 – Joset 2012-08-08 02:52:36

+0

根據您想要提供給程序其他部分的信息來考慮它。讓我把它與一個例子聯繫起來,那就是國防部隊的安全許可。您只想將信息提供給具有所需安全許可的人員。除非他理應知道,否則你不想讓每個人都知道所有的信息。與程序一樣..你有很多帶變量和方法的類。私人告訴說,這個信息應該只提供給這個班級,因爲沒有其他班級需要這個信息。 – user1420750 2012-08-08 02:53:57

回答

4

如果你公開所有的方法和變量,當另一個程序員試圖用你編寫的類來做某件事時,它會非常困難,因爲他不知道哪些方法會照顧到你的類的內部行爲,是他不應該使用的方法,因爲他會弄亂對象的內部狀態並導致錯誤。

+0

感謝這就是我一直在尋找。:) – robotmaker01 2012-08-08 02:55:14

1

你不必「做任何事情」。僅暴露絕對必須暴露的東西是一種很好的做法,特別是當您創建一個大型程序,其連接數呈指數級增長時,副作用的風險隨之增加。這完全是關於管理複雜性。閱讀關於封裝和信息隱藏的內容,以及它如何幫助降低大型系統的複雜性。一本好書是Grady Booch的面向對象設計。

0

在面向對象的世界中實現封裝,理解你想要公開的對象的功能或行爲以及每個訪問標識符在其中扮演重要角色是非常重要的。在代碼完整書中,麥康奈爾強烈鼓勵將所有變量設爲私有。

0

考慮你正在構建一個實用程序庫,並且你將把方法作爲實用程序公開給外部世界。但是這些方法可能只有很少的私有方法。所以直接調用這些私有方法可能沒有任何意義,在最壞的情況下,它們甚至可能會損害對象的狀態。有很多例子可以解釋甚至在jdk中使用private。 在String類中,有一個私有方法checkBounds剛剛檢查有效的構造函數的參數在public String(byte bytes[], int offset, int length, String charsetName)

揭露這種方法(使它公衆)的情況下是沒有意義的String類。

0

私人顧名思義它是從外部類私人/不可訪問的東西。面向對象的編程語言有一個重要的概念,稱爲封裝這意味着限制訪問某些對象的組件。在開發代碼時,您需要隱藏其他類中的某些對象,在這種情況下,請將這些對象/變量作爲私有對象來刪除。私人訪問僅限於定義的類。

相關問題