封裝性(有時稱為數據隱藏)。實現封裝的關鍵在於絕對不能讓類中的方法直接地訪問其他類的實例域值。程式僅通過對象的方法與對象的數據進行交互。給對象賦予了“黑盒”的特征,提高了重用性和可靠性。簡而言之,就是只需知道方法對應的作用,而不必瞭解它的具體實現過程。 實例域 私有數據域即寫在全局的私有變數或常量。 ...
封裝性(有時稱為數據隱藏):
實現封裝的關鍵在於絕對不能讓類中的方法直接地訪問其他類的實例域值。程式僅通過對象的方法與對象的數據進行交互。
給對象賦予了“黑盒”的特征,提高了重用性和可靠性。簡而言之,就是只需知道方法對應的作用,而不必瞭解它的具體實現過程。
實例域
- 私有的數據域:
私有數據域即寫在全局的私有變數或常量。私有數據域要比公有數據域要複雜,因為需要增加私有數據域對應的域訪問器和域更改器方法,但是卻有下列明顯好處:
- 1 在該類的方法中修改實現方式,不會影響到其他的代碼,如修改getBrithday的返回值和修改其內部實現方式。
2.1 如果出現異常,那麼更改器方法(即set方法)可以執行錯誤檢查(debug)。若是公有的數據域,可以直接對其賦值,那麼錯誤出現的地方就可能有很多了。
2.公有的訪問器和更改器方法:
訪問器訪問則是get方法,更改器方法則是set方法。此處需要註意:儘量不要返回引用可變對象的訪問器方法。看不懂?看下圖:
因為Date類型中有setTime方法,如果直接返回引用對象,並且再使用setTime修改其對象,那麼就會破壞掉封裝性。而應該使用Object的clone(克隆)方法進行拷貝數據域,如下圖
當要修改UserInfo中的brithday時,再調用其對應的更改器方法(setBrithday)即可。
如果有哪裡寫的不對或者補充說明,可以發郵箱至博主QQ郵箱:[email protected] 或者 留言。謝謝大家。