Mestikah Anda Secara Eksplisit Memanggil Pembina Kelas Super dalam Subkelas Java?
Apabila mentakrifkan subkelas, adalah amalan biasa untuk melihat pembina yang secara eksplisit memanggil pembina superclass menggunakan super(). Walau bagaimanapun, seseorang mungkin mempersoalkan jika ini perlu.
Adakah super() Ditambah Secara Automatik oleh Pengkompil?
Ya, jika pembina subkelas meninggalkan panggilan kepada superclass pembina, pengkompil secara automatik akan memanggil pembina tanpa hujah yang boleh diakses (pembina tanpa args) dalam superclass. Tingkah laku lalai ini dikenali sebagai perantaian pembina.
Jenis Pembina
Bila super( ) Diperlukan?
Menggunakan super() secara eksplisit hanya diperlukan jika:
Contoh 1:
<code class="java">public class Base {} public class Derived extends Base {}</code>
Tidak panggilan eksplisit kepada super() diperlukan kerana Base mempunyai pembina lalai.
Contoh 2:
<code class="java">public class Base { public Base(int i) {} } public class Derived extends Base { public Derived(int i) { super(i); // Explicitly call the Base(int) constructor } }</code>
Dalam kes ini, super(i) diperlukan kerana superclass tidak mempunyai pembina no-args, dan pembina subclass perlu menyediakan nilai awal untuk parameter inya.
Dengan memahami konsep ini, anda boleh mengelakkan panggilan super() yang tidak diperlukan dan memastikan rantaian pembina yang betul dalam subkelas anda.
Atas ialah kandungan terperinci Adakah Subkelas Java Sentiasa Perlu Memanggil Pembina Superclass secara Eksplisit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!