Pembina dalam Java: "Void" lwn. "Non-Void"
Dalam bahasa pengaturcaraan Java, kelas boleh mempunyai pembina, yang ialah kaedah khas yang dipanggil apabila contoh kelas dibuat. Pembina berfungsi untuk memulakan keadaan objek. Terdapat dua jenis pembina: pembina "void" dan pembina "non-void".
Pembina "Non-Void"
Pembina "non-void" mengisytiharkan jenis pulangan selain batal. Dalam erti kata lain, ia mengembalikan nilai, biasanya contoh kelas itu sendiri. Apabila pembina "non-void" dipanggil, objek baharu dicipta dan nilai yang dikembalikan diberikan kepada pembolehubah rujukan yang memanggil pembina.
"Void" Constructors
Pembina "Void", sebaliknya, tidak mengisytiharkan jenis pulangan. Sebaliknya, mereka hanya melaksanakan badan pembina dan memulakan keadaan objek. Mereka tidak mengembalikan nilai, dan oleh itu tidak boleh digunakan untuk mencipta objek baharu.
Isu Keterlihatan Pembina
Di Java, pembina tidak mempunyai pengubah suai akses yang sama seperti kaedah. Keterlihatan pembina mesti sepadan dengan keterlihatan kelas itu sendiri. Contohnya, jika kelas diisytiharkan awam, maka pembinanya juga mesti diisytiharkan awam.
Contoh: Kesan Keterlihatan Pembina
Pertimbangkan dua coretan kod berikut:
Contoh 1: Pembina dengan Pulangan Taip
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); } }
Contoh 2: Pembina dengan Jenis Pengembalian 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); } }
Pemerhatian:
Dalam Contoh 1, output ialah 2. Ini kerana pembina memanggil kaedah da(), yang menambah medan nilai sebanyak 1.
Walau bagaimanapun, dalam Contoh 2, output ialah 0. Ini kerana pembina dengan jenis pengembalian void sebenarnya tidak memanggil kaedah da(). Sebaliknya, ia adalah kaedah dengan nama yang sama dengan kelas, yang berbeza daripada pembina.
Kesimpulan:
Di Java, pembina bukan kaedah. Ia digunakan untuk memulakan keadaan objek dan tidak mempunyai jenis pulangan. Percubaan untuk mengisytiharkan pembina dengan jenis pemulangan selain daripada batal akan mengakibatkan ralat penyusunan.
Atas ialah kandungan terperinci Java Constructors: Apakah Perbezaan Antara Void dan Non-Void Constructors?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!