1. 程式人生 > 其它 >Java學習:十.封裝

Java學習:十.封裝

技術標籤: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());
    }
}

在這裡插入圖片描述
最後,我說一下我本人對於封裝的一些見解,封裝在我們生活中很常見,比如我們的手機,電腦,電視等等,這些封裝使我們可以很方便的去使用它們,而不用去真的瞭解他們的執行,比如我們操控遙控器就可以對電視進行頻道的切換,無論你如何按遙控器,甚至把它放到水裡,電視機依然完好無損,這就是黑匣子操作的好處,這就是封裝帶來的好處。
封裝使面向物件程式設計的三大操作之一,也是後面的繼承和多型的基礎,所以把握好封裝具有重要的意義。