[05] 利用private來封裝
阿新 • • 發佈:2017-08-31
調用方法 必須 屬性和方法 src 隱藏 發的 屬性 if語句 可能
我們知道,面向對象開發的三大特點是:封裝性、繼承性、多態性
所謂封裝性,實際上是表達了一種信息隱藏。從表面上來闡述,就是使用private修飾符來對屬性或者方法進行信息隱藏,而使用public的方法控制訪問。
例如,屬性使用private,方法使用public,則:
那麽如上,這樣一來,你想獲取一個Person對象的name屬性的話,你就不能使用類似於 zhangsan.name 的方式,而必須使用 zhangsan.getName()
這樣是為了更好的進行數據隱藏,要知道,在程序開發的過程中是靠多人協作完成的,也就是說程序員A可能會用到程序員B寫的某個方法,如果程序員B的所有屬性和方法都是暴露的,那麽程序員A在使用時完全可能會因為不熟悉(因為畢竟不是他自己寫的)而錯誤調用方法,或者更改了屬性,最終就會出現bug。所以使用封裝,我只暴露出來別人需要用到的方法,其他的他們無法訪問,那麽就大大降低了誤用的風險。
另外,數據的封裝,如最常見的各類屬性用private限制,而使用public開放的getter和setter來操作,因為很多時候並沒有設定特殊的動作,讓人感到多此一舉,實際不然。
getter和setter真正的好處在於,萬一某天你發現這個變量需要限制,那麽你只需要更改getter和setter中的代碼,而其他已經通過getter和setter來調用屬性的地方不用重復地去修改。
想象一下你所有的屬性都是public,其他的地方直接調用,當有一天你需要限制變量,如某屬性不能為負數了,怎麽辦?每個調用的地方修改一下,去使用if語句判斷是否大於0,那假如我調用了1000個地方呢?10000個地方呢?
最後,對於封裝的說明,這位網友的博客進行了更詳細的說明,推薦一波:java提高篇(一)-----理解java的三大特性之封裝
我們知道,面向對象開發的三大特點是:封裝性、繼承性、多態性
所謂封裝性,實際上是表達了一種信息隱藏。從表面上來闡述,就是使用private修飾符來對屬性或者方法進行信息隱藏,而使用public的方法控制訪問。
例如,屬性使用private,方法使用public,則:
public class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
那麽如上,這樣一來,你想獲取一個Person對象的name屬性的話,你就不能使用類似於 zhangsan.name 的方式,而必須使用 zhangsan.getName()
這樣是為了更好的進行數據隱藏,要知道,在程序開發的過程中是靠多人協作完成的,也就是說程序員A可能會用到程序員B寫的某個方法,如果程序員B的所有屬性和方法都是暴露的,那麽程序員A在使用時完全可能會因為不熟悉(因為畢竟不是他自己寫的)而錯誤調用方法,或者更改了屬性,最終就會出現bug。所以使用封裝,我只暴露出來別人需要用到的方法,其他的他們無法訪問,那麽就大大降低了誤用的風險。
另外,數據的封裝,如最常見的各類屬性用private限制,而使用public開放的getter和setter來操作,因為很多時候並沒有設定特殊的動作,讓人感到多此一舉,實際不然。
getter和setter真正的好處在於,萬一某天你發現這個變量需要限制,那麽你只需要更改getter和setter中的代碼,而其他已經通過getter和setter來調用屬性的地方不用重復地去修改。
想象一下你所有的屬性都是public,其他的地方直接調用,當有一天你需要限制變量,如某屬性不能為負數了,怎麽辦?每個調用的地方修改一下,去使用if語句判斷是否大於0,那假如我調用了1000個地方呢?10000個地方呢?
最後,對於封裝的說明,這位網友的博客進行了更詳細的說明,推薦一波:java提高篇(一)-----理解java的三大特性之封裝
[05] 利用private來封裝