封裝


//PURPOSE:建立一個汽車物件
public class Car {

    //變數
    private String name; 
    private String color;

    //建構子
    public Car(){
        name="car";
        color="black";
    }
    public Car(String n,String c){
        name=n;
        color=c;
    }

    //方法
    public void car_break(){
        System.out.println(name+"煞車中");
    };
    public void Speed_up(){
        System.out.println(name+"加速中");
    };
}

由class Car的內部設計可看出,變數我們通常都習慣設定成private,再透過其他public function來設定物件裡的private變數,這樣就可以避免其他使用者用不適當的操作方法給予變數名稱。

taxi.color="yellow"; // error : The field Car.color is not visible

以class Car為例,我們要更改汽車的顏色,只能在建置汽車物件時,透過建構子更改,並不能直接輸入更改。

若要讓使用者在其他狀饋下可以更改,通常會在class內部建立一個新的method

public void setColor(String c){
    color=c;
}
taxi.setColor("yellow"); // correct : 使用public function來更改private field

以台灣國民為例,每一個國民都是不同的物件,每個人都有身分證字號這個屬性,身分證字號會根據一連串的規則來產生,讓每個人的身份證字號都是獨一無二的,例如不同縣市出生就會有不同英文字母開頭的身分證字號。

今天我們若統一向戶政事務所來申請身分證字號,那產生出來的身分證字號將有規律且合法,但我們若讓每個人都自行更改自己的身分證字號,大家隨便想取什麼身分證字號都可以,將會造成一團混亂。

程式碼也是同理,所以我們盡量避免讓其他使用者擁有直接更改特定變數內容的權力。

像這樣將特定函式和變數設成private,讓使用者僅能透過特定管道來取得或使用,就稱為封裝

results matching ""

    No results matching ""