上一篇用了車子來舉列一些物件導向的概念,這次我用"人"這個類別來介紹JAVA裡「建構式」(Constructor)的概念
Code 1:

public class Human {
  
    String Name;
// Method 1
    public void Human() {
        System.out.println(Name);
    }
// Method 2
    public void Human(String name) {
        Name = name;
        System.out.println(Name);
    }
// Method 3
    public void Human(String name, int age) {
        Name = name;
        System.out.printf("%s %d\n",Name,age);
        System.out.printf("%s %d\n",name,age);
    }

}

上面是"Human"類別的程式碼, 裡面有一個叫Name的實體變數、三個叫Human的Method就是"建構式"

*「具有與類別相同名稱的Method就是"建構式"」(建構式不需要回傳值)

那三個建構式的Method裡面包含了印出名字的指令,看看主程式的程式碼

Code 2:

public class Main {

    public static void main(String[] args) {
        Human Peter = new Human();                  // Method 1
        Human Mary = new Human("Mary");        // Method 2
        Human Sam = new Human("Sam", 16);   // Method 3
    }

}

主程式(Code 2)用了建構式的方法來產三個"Human"類別的物件,

第一行產生了一個名稱叫做Peter的物件,他的建構式並沒有傳進任何的參數

第二行產生了一個名字叫做Mary的物件,他的建構式傳進了他的名字作參數

第三行產生了一個名字叫做Sam的物件,他的建構式傳進了他的名字和年齡作參數

用建構式產生物件時會執行建構式裡的指令,這裡的程式碼是輸出的指令

輸出的結果是:

null
Mary
Sam 16
Sam 16

1. 第一行為Peter物件所輸出的結果。他是用沒有參數的Method 1建構式,執行Method 1建構式輸出實體變數Name的指令時,Name的值是null,所以輸出結果是null

2. 第二行為Mary物件所輸出的結果。他是用帶有一個參數的Method 2建構式,執行Method 2建構式輸出實體變數Name的指令時,Name的值被指定是參數name的值,所以輸出結果為產生Mary物件時所輸入的參數"Mary"

3. 第三,四行為Sam物件所輸出的結果。他是用帶有一個參數的Method 3建構式,而Method 3建構式有2個輸出指令:
3.1 第三行是輸出Name和參數age的值,執行輸出指令時,Name的值被指定是參數name的值
3.2 第四行是直接輸出參數name和參數age的值

*第三,四行輸出結果告訴了我們,「建構式的參數是可以直接運用」

順帶一提,像同樣叫"Human"的Method,但輸入參數的數目或型態不同的運用方式叫Overloading(多載,重載),在之後的文章中會更深入探討

總結一下運用建構式的好處:宣告(產生)一個物件時可以把該物件的屬性(用參數的方式)一起宣告,不必再用多餘的程式碼宣告或設定它的屬性

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Chris_U in CSIE 的頭像
    Chris_U in CSIE

    Chris_U的CSIE部落格

    Chris_U in CSIE 發表在 痞客邦 留言(1) 人氣()