Java menguatkuasakan peraturan ketat iaitu this() dan super() panggilan mestilah pernyataan pertama dalam pembina. Sekatan ini wujud untuk memastikan pemulaan kelas induk yang betul sebelum pelaksanaan pembina kelas anak.
Sebagai contoh, kod berikut akan mencetuskan ralat masa kompilasi kerana super(c) bukan pernyataan pertama dalam MySubClass pembina:
public class MySubClass extends MyClass { public MySubClass(int a, int b) { int c = a + b; super(c); // COMPILE ERROR } }
Walau bagaimanapun, ini boleh dielakkan dengan mengubah suai kod kepada:
public class MySubClass extends MyClass { public MySubClass(int a, int b) { super(a + b); // OK } }
Mengapa Pemesanan Penting
Panggilan super() dalam pembina subkelas memulakan pembolehubah contoh kelas induk dan memanggil pembina induk. Ini memastikan bahawa kelas induk dimulakan sepenuhnya sebelum pembina subkelas meneruskan.
Jika super() tidak diperlukan untuk menjadi pernyataan pertama, adalah mungkin untuk melaksanakan operasi yang bergantung pada kelas induk yang dimulakan sebelum ini. ia sebenarnya telah dimulakan, berpotensi membawa kepada tingkah laku yang tidak ditentukan.
Pengecualian dan Penyelesaian
Walaupun pengkompil memerlukan ini() dan super() digunakan dahulu, ia tidak menyekat pelaksanaan logik dalam pembina. Logik boleh diletakkan dalam satu ungkapan atau dihantar ke super() atau ini() panggilan.
Contohnya:
public class MySubClass extends MyClass { public MySubClass(int a, int b) { super(Arrays.asList(new Object[] { a, b })); // OK } }
Kesimpulan
Sekatan bahawa this() dan super() mestilah pernyataan pertama dalam pembina berfungsi untuk memastikan permulaan objek yang betul dan mencegah kemungkinan ralat yang disebabkan oleh pramatang akses kepada ahli kelas induk sebelum mereka dimulakan dengan betul. Ini menguatkuasakan susunan pelaksanaan pembina yang boleh diramal untuk kelas, memastikan integriti dan konsistensi objek.
Atas ialah kandungan terperinci Mengapa Mesti `this()` dan `super()` Menjadi Pernyataan Pertama dalam Pembina Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!