HOWTO · Java

Java 中的預設建構函式

本文介紹預設建構函式在 Java 中的工作原理。

在 Java 語言中,術語建構函式類似於我們在程式設計中執行的方法。在建立建構函式時,你應該記住它的一些屬性。

  1. 建構函式的名稱必須與類名的名稱一致。
  2. 建構函式不能有任何返回型別。
  3. 一個類中可以有引數化建構函式和無引數建構函式(預設建構函式)。
  4. 建構函式總是在物件被例項化時被呼叫。
  5. 建構函式不應繼續使用 abstract, static, finalsynchronized 等關鍵字。

Java 中的預設建構函式

Java 預設建構函式通常稱為 no-args 建構函式。下面,你可以檢視程式碼塊以瞭解 Java 中的預設建構函式。

public class Main {
  public static void main(String[] args) {
    B b = new B();
    System.out.println(b.a);
  }
}

class B {
  int a;
}

在上面的程式碼塊中,你會看到有兩個類;第一個儲存 main 方法,另一個用於描述建構函式的功能。

main 函式是程式的入口點,從這裡開始執行。因此,驅動類語句 new B() 呼叫了 B 類的公共 no-argument 建構函式。由於沒有給定建構函式的顯式定義,編譯器會自行建立一個預設建構函式,並在上面的語句中呼叫它。

建構函式初始化類的變數。當沒有定義建構函式時,編譯器將變數的值初始化為其預設值。當 B 類的變數 aprintln 函式中被引用時,列印的值在下面的輸出中。

輸出:

0

Java 中的引數化建構函式

引數化建構函式的用途是在物件建立時傳遞引數的數量。下面是演示其功能的程式碼塊。

public class Main {
  public static void main(String[] args) {
    A a = new A(1, "One");
    System.out.println(a.a + " " + a.b);
    //      A a1= new A();
  }
}

class A {
  int a;
  String b;

  A(int a, String b) {
    this.a = a;
    this.b = b;
  }
}

在上面的程式碼塊中,A 是一個用於演示引數化建構函式的類。另一個是包含 main 方法的類。在函式中,new A(1, "One") 語句在內部呼叫 A 類的引數化建構函式。建立的物件被分配給類的引用,並且建構函式的定義在類中定義。

建構函式 A(int a, String b) 初始化 ab 變數的值。在引數中傳遞的值將被複制到變數中。在 println 函式中,使用引用變數呼叫 A 類的類變數;它在輸出中列印例項化的值,並在其間新增一個空格。

在它旁邊,有一個註釋語句。我們使用 // 操作符對執行的語句進行評論。語句 new A() 在內部試圖找到類的 no-argument 建構函式。如果編譯器沒有找到任何預設建構函式,它可以建立一個預設建構函式。

這種能力僅限於沒有定義顯式建構函式的情況。因此,在這種情況下,使用者必須手動建立 no-args 建構函式。A a1= new A(); 函式丟擲編譯時錯誤。解決此問題的兩個選項是建立預設建構函式或更改導致現有語句中斷的現有引數化建構函式的簽名。因此,該行被註釋。

輸出:

1 One