Java學習:十.封裝
阿新 • • 發佈:2021-02-14
技術標籤:Java
文章目錄
一.封裝的作用
1.保護內部結構的安全
2.遮蔽複雜,暴露簡單
二.不封裝的缺點
先來看一段程式
public class Person {
int age;
}
public class PersonTest {
public static void main(String[] args) {
Person p1 = new Person();
p1.age = -100;
System.out.println (p1.age);
}
}
執行結果
從結果中看出,雖然程式順利通過編譯,並且執行過程也沒有任何錯誤,但是年齡應該是個自然數,不能是負數,我們的程式能在外部隨意的訪問,會造成資料的不安全,所以我們的程式並不好。
三.使用關鍵字private進行封裝
我們將程式碼塊Person類的資料屬性設定為private
public class Person {
private int age;
}
執行結果:
我們發現對資料進行了封裝,但是封裝過頭了,資料無法訪問,更無法修改了,這不是我們想要的,因為我們要對資料進行操作啊,就好比你造一間房屋,卻沒有了門,那麼這個房屋就失去了它的意義,我們應該給它裝個門,由此我們想到了也可以給程式設計個類似的門一樣的東西。
四.set方法和get方法的封裝
考慮到用了private關鍵字修飾資料後,只能在本類中訪問,我們由此想到可以在本類中利用方法訪問和修改資料,由此產生了get方法和set方法。
get:
public 返回值型別 get+屬性名字字母大寫(無參){
return xxx;
}
set:
public void set+屬性名字字母大寫(有一個無參){
xxx = 引數;
}
(注意:get和set方法的名稱要嚴格按照 set+屬性名字字母大寫 或者 get+屬性名字字母大寫 ,不然以後我們的程式是一個不通用的程式)
最終的程式:
public class Person {
private int age;
public int getAge() {
return age;
}
public void setAge(int year) {
age = year;
}
}
public class PersonTest {
public static void main(String[] args) {
/**建立一個物件*/
Person p1 = new Person();
/**使用get方法獲得age的初始值*/
System.out.println(p1.getAge());
/**使用set方法給age賦初值*/
p1.setAge(100);
/**使用get方法獲取age並且輸出age的值*/
System.out.println(p1.getAge());
}
}
最後,我說一下我本人對於封裝的一些見解,封裝在我們生活中很常見,比如我們的手機,電腦,電視等等,這些封裝使我們可以很方便的去使用它們,而不用去真的瞭解他們的執行,比如我們操控遙控器就可以對電視進行頻道的切換,無論你如何按遙控器,甚至把它放到水裡,電視機依然完好無損,這就是黑匣子操作的好處,這就是封裝帶來的好處。
封裝使面向物件程式設計的三大操作之一,也是後面的繼承和多型的基礎,所以把握好封裝具有重要的意義。