JAVA_SE基礎——28.封裝,java_se28封裝
黑馬程式員blog...
物件導向三大特徵:
1. 封裝
2. 繼承
3 多態。
今天我們先學習第一大特徵,封裝。
封裝:是指隱藏對象的屬性和實現細節,僅對外提供公用訪問方式。
好處:
1. 將變化隔離。
2. 便於使用。
3. 提高複用性。
4. 提高安全性。
封裝原則:
1. 將不需要對外提供的內容都隱藏起來。
2. 把屬性都隱藏,提供公用方法對其訪問。如,getXXX,setXXX。
許可權修飾符:許可權修飾符就是控制變數可見範圍的。
public : 公用的。 public修飾的成員變數或者方法任何人都可以直接存取。
private : 私人的, private修飾的成員變數或者方法只能在本類中進行直接存取。
封裝的步驟:
1. 使用private修飾需要被封裝的屬性。
2. 提供一個公用的方法設定或者擷取該私人的成員屬性。
命名規範:
set屬性名稱();
get屬性名稱();
疑問: 封裝一定要提供get或者set方法嗎?
不一定, 根據需求而定的。
規範 : 在現實開發中一般實體類的所有成員屬性(成員變數)都要封裝起來。
實體類:實體類就是用於描述一類 事物的就稱作為實體類。
封裝的解釋;為了避免對資料域的直接修改,應該使用private修飾符將資料域聲明為私人的。這就稱為資料域封裝(data field encapsulation)
在定義私人資料域的類外的對象是不能訪問者個資料域的。但是經常會有用戶端需要存取、修改資料域的情況。為了能訪問私人資料域,可以提供一個get方法返回資料域的值。為了能夠更新一個資料域,可以提供一個set方法給資料設定新值。
封裝的白話解釋:原文題材連結:http://blog.csdn.net/chenssy/article/details/12757911
所以封裝把一個對象的屬性私人化,同時提供一些可以被外界訪問的屬性的方法,如果不想被外界方法,我們大可不必提供方法給外界訪問。但是如果一個類沒有提供給外界訪問的方法,那麼這個類也沒有什麼意義了。比如我們將一個房子看做是一個對象,裡面的漂亮的裝飾,如沙發、電視劇、空調、茶桌等等都是該房子的私人屬性,但是如果我們沒有那些牆遮擋,是不是別人就會一覽無餘呢?沒有一點兒隱私!就是存在那個遮擋的牆,我們既能夠有自己的隱私而且我們可以隨意的更改裡面的擺設而不會影響到其他的。但是如果沒有門窗,一個包裹的嚴嚴實實的黑盒子,又有什麼存在的意義呢?所以通過門窗別人也能夠看到裡面的風景。所以說門窗就是房子物件留給外界訪問的介面。
如果還沒有弄懂的同學下面來看個例子;
class Person{ publicString name; //名字privateString sex; //性別publicint salary; //薪水//定義一個公用的方法設定sex屬性public void setSex(String s){if (s.equals("男")||s.equals("女")){ //注意: 如果比較兩個字串的內容是否一致,不要使用==比較, 使用equals方法。sex = s;}else{//預設是男sex = "男";}}//定義一個公用的方法擷取sex屬性public String getSex(){return sex;}//聊天的功能public void talk(){System.out.println(name+"聊得非常開心");}}class Demo5{public static void main(String[] args) {Person = new Person();m.name="張家儀";m.setSex("女");m.salary = 9900;System.out.println("姓名:"+ m.name+" 性別:"+ m.getSex()+" 薪水:"+ m.salary);}}
比如上面代碼是微博。 一般女孩子都不喜歡把自己的真實年齡給填上去,所以一般的微博都可以設定為隱私。 這個功能就像是private關鍵字,把年齡這個成員屬性給私人化,只有自己才看的到,別人看不到。 私人屬性只能在它的類中被訪問,為了能讓外界訪問私人屬性,需要提供一些使用public修飾的公有方法,其中包括用於擷取屬性值得getXxx()方法和設定屬性值的setXxx()方法。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。