2011-07-07 19 views
1

我不認爲我是理解爲什麼設置私人以外的「你應該這樣做」。如果我有一個自動售貨機類,它有一個變量,說明它在機器中有多少硬幣對一切都沒用,我爲什麼要把它設置爲私有?這不像是我會變得很高,在另一個類別寫vendingMachine.coins = 99999.爲什麼要設置私密?我不會瘋狂和隨機變量混亂

+1

也許你不是,但你的同事誰不瞭解VendingMachine的概念可能。你保護他不受私人保護,而不是你自己。 – RIAstar

回答

0

這可能是真實的,但OOP的重點是分離職責,並保持與相應的方法數據在一起。對於非常小的和一個人的項目,這可能不是必需的,但是在重複使用來自其他人的對象的大型項目中,您有時不知道應該修改哪些字段以及哪些字段不應該混淆。這就是爲什麼在OOP中只定義了公共接口和所有內部私有接口。這也使您可以在不破壞程序的情況下更改內部實現。

看一看: http://simple.wikipedia.org/wiki/OOP

2

使用private有幾個好點 - 我用它在很大程度上,除非我真的需要屬性或方法將被寫入&從多個地方讀取。

  1. Tidyness - 這是非常簡單的,看看有什麼屬性僅被當前類內變化,並且方法僅被從當前類中調用。
  2. 只讀 - 屬性可以使用帶有公共getter的私有屬性進行只讀。
  3. 您可以特別使用屬於獲取者和設置者的屬性。

真的,使用private給我一個很好的概述我的應用程序。我可以很容易地計算出哪些變量可以與課外混合,哪些變量只能在課堂上變化。

就我個人而言,當我嘗試想象我的應用程序時,我將每個類視爲一個圓。每個圓都有一個分支,表示連接到所有其他有權訪問的圓的屬性或方法。現在當你考慮這個視覺時,如果一切都是public,那將會是一個巨大的糾結。

我這樣接近我的面向對象;而不是隻做一個財產或方法private當它真的需要是private,我只做一個屬性或方法public如果它真的需要在整個應用程序中訪問。我提供最嚴格的一切訪問。即internal爲同一包中的內容,protected僅用於擴展類中的事物,private用於僅在其定義的類中觸及的內容。我還大量使用private屬性,並定義了getter,以便我可以立即知道屬性只會在包含它的類中更改,但是可以在其他區域中訪問。

相關問題