Adakah Kehadiran super() dalam Pembina Pilihan?
Dalam pengaturcaraan berorientasikan objek, adalah amalan biasa untuk menggunakan pembina dalam kelas terbitan untuk memanggil Pembina dalam kelas super mereka. Walau bagaimanapun, sesetengah pembangun mempersoalkan keperluan untuk menyatakan secara eksplisit super() dalam pembina.
Invocation Automatic Compiler super()
Pengkompil Java secara automatik memasukkan panggilan ke pembina no-args superclass yang boleh diakses jika pembina subclass tidak menentukan pembina superclass. Ini bermakna dalam kebanyakan kes, peninggalan super() tidak menjejaskan gelagat program.
Pengecualian kepada Peraturan
Walau bagaimanapun, terdapat situasi di mana seruan eksplisit super() diperlukan:
Penggunaan Pembina dalam Kehadiran Argumen
Apabila pembina subkelas mempunyai hujah, menjadi tanggungjawab pembina subkelas untuk menghantar hujah yang sesuai kepada pembina kelas super. Pengkompil tidak akan memanggil pembina kelas super secara automatik dengan argumen melainkan dinyatakan secara eksplisit.
Contoh
Pertimbangkan kod berikut:
<code class="java">public class Base { private Base() {} } public class Derived extends Base { public Derived(int i) { super(); // Call the default no-args constructor of Base } }</code>
Dalam contoh ini, panggilan super() dalam pembina Terbitan adalah penting kerana Base mempunyai pembina no-args peribadi.
Atas ialah kandungan terperinci Patutkah Anda Sentiasa Gunakan `super()` dalam Pembina?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!