Rumah  >  Artikel  >  Java  >  Patutkah Anda Sentiasa Gunakan `super()` dalam Pembina?

Patutkah Anda Sentiasa Gunakan `super()` dalam Pembina?

Barbara Streisand
Barbara Streisandasal
2024-11-02 12:30:30585semak imbas

Should You Always Use `super()` in Constructors?

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:

  • Jika superclass tidak mempunyai pembina no-args yang boleh diakses.
  • Jika pembina subclass mempunyai argumen dan superclass mempunyai pembina yang menerima hujah.
  • Jika pembina subkelas perlu memanggil pembina tertentu dalam superclass selain daripada pembina no-args lalai.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn