Rumah > Java > javaTutorial > teks badan

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

Barbara Streisand
Lepaskan: 2024-11-02 12:30:30
asal
591 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!