首頁 > Java > java教程 > Java 建構子:Void 和非 Void 建構子有什麼不同?

Java 建構子:Void 和非 Void 建構子有什麼不同?

Mary-Kate Olsen
發布: 2024-12-05 13:13:14
原創
686 人瀏覽過

Java Constructors: What's the Difference Between Void and Non-Void Constructors?

Java 中的建構子:「Void」與「Non-Void」

在Java 程式語言中,類別可以有建構函數,其中是創建類別的實例時調用的特殊方法。構造函數用於初始化物件的狀態。建構子有兩種類型:「void」建構子和「非 void」建構子。

「非 Void」建構子

「非 void」建構子宣告 void 以外的回傳型別。換句話說,它會傳回一個值,通常是類別本身的實例。當呼叫「非 void」建構函式時,將建立一個新對象,並將傳回值指派給呼叫該建構函式的參考變數。

「Void」建構子

另一方面,「Void」建構子不會宣告回傳型別。相反,它們只是執行構造函數主體並初始化物件的狀態。它們不傳回值,因此不能用於建立新物件。

建構子可見性問題

在 Java 中,建構子沒有與建構子相同的存取修飾符方法。建構函數的可見性必須與類別本身的可見性相符。例如,如果一個類別被宣告為 public,那麼它的建構子也必須宣告為 public。

範例:建構子可見性影響

考慮以下兩個程式碼片段:

範例1:帶Return 的建構子類型

public class Class1 {
    public static Integer value = 0;
    public Class1() { da(); }
    public int da() {
        Class1.value += 1;
        return 5;
    }
    public static void main(String[] args) {
        Class1 h = new Class1();
        Class1 h2 = new Class1();
        System.out.println(Class1.value);
    }
}
登入後複製

範例2:具有Void傳回型別的建構子

public class Class1 {
    public static Integer value = 0;
    public void Class1() { da(); }
    public int da() {
        Class1.value += 1;
        return 5;
    }
    public static void main(String[] args) {
        Class1 h = new Class1();
        Class1 h2 = new Class1();
        System.out.println(Class1.value);
    }
}
登入後複製

觀察:

在範例 1 中,輸出為 2。這是因為建構函式呼叫了da() 方法,將 value 欄位增加 1。

但是,在範例 2 中,輸出為 0。這是因為傳回型別為 void 的建構子其實並沒有呼叫 da() 方法。相反,它是與類別同名的方法,與建構函數不同。

結論:

在 Java 中,建構子不是方法。它們用於初始化物件的狀態並且沒有傳回類型。嘗試宣告傳回型別不是 void 的建構函式將導致編譯錯誤。

以上是Java 建構子:Void 和非 Void 建構子有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板