在類中,變量通常被封裝爲私有的,並且將變量限制到特定範圍允許更好的錯誤控制和更少的錯誤。這是有道理的,因爲一個變量可以被訪問的地方越少,那個變量就會出現一個錯誤的地方越少。然而,我總是看到變量是私有的,然後使用getter和setter函數來檢索該值(有時甚至是指向該變量的指針!)。例如int a
是專用於防止公衆訪問,但getA()
和setA()
允許直接訪問它們。通過getter和setter(accessor)函數訪問私有變量有什麼意義?
所以不要把getter函數和setter函數藐視它是私有的嗎?我的意思是訪問器函數的私有變量與公共變量相同,只有訪問它們的代碼發生變化。 (object.variable vs object.getVariable())
是否有一個原因讓變量與訪問函數私有變量?與公開相比有什麼優勢嗎?我一般在談論編程,但大多數是用C語言編寫的(即C,C++,C#,Obj-C)。
這真的取決於語言。在限制性OO語言(C#,Java)中,getters/setters是一種常見的習慣用法,而在像C++這樣的更自由的語言中,它們通常是不好的風格。 –