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中文網其他相關文章!