iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0
自我挑戰組

從免費網路資源中入門java系列 第 14

【Day14】Java 建構式(Constructor):基礎概念與使用技巧

  • 分享至 

  • xImage
  •  

在 Java 中,建構式是一個類似於方法的程式碼區塊。當類別的實例被創建時,會調用建構式,在調用建構式的時候,物件的記憶體會被分配。

如果在類別中沒有明確定義任何建構式,Java 會自動提供一個預設的無參數建構式。這個建構式會執行基本的初始化操作,如將物件的屬性設為其類型的預設值(例如,整數的預設值是 0,布林值是 false,參考型別則是 null);反之,如果在類別中有定義建構式,Java則不會另外再自動生成建構式。

每次使用 new() 關鍵字建立物件時,都會呼叫建構式。

建構式的規則:
1.建構式名稱必須與其類別名稱相同。
2.建構函數不可宣告回傳值型態。
3.Java 建構子不能是abstractstaticfinalsynchronized

例如:

class Animal {
    String name;

    // 建構式,會在每次創建物件時調用
    public Animal(String name) {
        this.name = name;
        System.out.println(name + " 被創建了!");
    }
}

public class Main {
    public static void main(String[] args) {
        // 第一次實例化
        Animal dog = new Animal("狗");
        // 第二次實例化
        Animal cat = new Animal("貓");
    }
}

// output: 狗 被創建了!
// output: 貓 被創建了!

重載(overload)
Java 的建構式跟方法一樣,支持重載(overload),判斷標準是根據參數的數量、類型和順序來區分不同的建構式。因此,兩個建構式如果只有參數名稱不同,而參數數量和類型都相同,Java 會認為它們是相同的建構式,從而導致衝突。

// 以下是錯誤示範

public class Person {
    String name;
    int age;

    // 第一個建構式
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 第二個建構式,參數數量和類型與上面的相同
    public Person(String firstName, int years) {
        this.name = firstName;
        this.age = years;
    }
}

上面的範例會報錯
error: constructor Person(String,int) is already defined in class Person


上一篇
【Day13】Java 的 Package 和 Import:如何組織和使用類別
下一篇
【Day15】Java - 類別的繼承(一) - 入門
系列文
從免費網路資源中入門java30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言