Rumah > Java > javaTutorial > Mengapa Mesti `this()` atau `super()` Menjadi Pernyataan Pertama dalam Pembina Java?

Mengapa Mesti `this()` atau `super()` Menjadi Pernyataan Pertama dalam Pembina Java?

DDD
Lepaskan: 2025-01-04 03:29:40
asal
708 orang telah melayarinya

Why Must `this()` or `super()` Be the First Statement in a Java Constructor?

Mengapa Mesti this() dan super() Menjadi Pernyataan Pertama dalam Pembina?

Java mewajibkan bahawa jika pembina memanggil ini() atau super(), panggilan ini mestilah pernyataan pertama pembina. Keperluan ini memastikan bahawa:

Memastikan Permulaan Kelas Induk yang Betul

Pembina kelas induk perlu memulakan tika kelas induk sebelum sebarang pemprosesan boleh berlaku dalam kelas anak. Ini memastikan kaedah yang dipanggil dalam pembina subkelas boleh bergantung pada kelas induk yang telah disediakan dengan betul.

Mencegah Perlaksanaan Kaedah Yang Tidak Wajar

Jika ini atau super tidak diperlukan untuk menjadi pernyataan pertama , adalah mungkin untuk melaksanakan kaedah pada kelas induk sebelum pembinanya dijalankan. Contohnya:

public class MySubClass extends MyClass {
        public MySubClass() {
                someMethodOnSuper(); // ERROR: super not yet constructed
                super(); // This call would be moved to the beginning of the constructor.
        }
}
Salin selepas log masuk

Pertimbangan Pembina Lalai

Dalam kes di mana kelas induk mempunyai pembina lalai, pengkompil secara automatik memasukkan panggilan ke super() sebagai pernyataan pertama kelas anak pembina. Ini perlu kerana setiap kelas Java mewarisi dari Object, yang pembinanya mesti dipanggil terlebih dahulu. Menguatkuasakan keperluan pernyataan pertama memastikan susunan pelaksanaan pembina yang konsisten:

Object -> Parent -> Child -> ChildOfChild -> SoOnSoForth
Salin selepas log masuk

Mengelakkan Kod Tidak Sah

Dengan membenarkan ini() atau super() dipanggil hanya sebagai pernyataan pertama, pengkompil menghalang kod tidak sah seperti ini:

public MySubClass extends MyClass {
        public MySubClass() {
                int c = a + b;
                super(); // COMPILE ERROR
        }
}
Salin selepas log masuk

Dalam contoh ini, super() mestilah yang pertama pernyataan, dan pengiraan c tidak dibenarkan mendahuluinya. Walau bagaimanapun, kefungsian boleh dicapai dengan menulis semula pembina seperti berikut:

public MySubClass extends MyClass {
        public MySubClass() {
                super(a + b); // OK
        }
}
Salin selepas log masuk

Kesimpulan

Keperluan untuk meletakkan this() dan super() sebagai pernyataan pertama dalam pembina memastikan betul perintah pelaksanaan, menghalang pelaksanaan kaedah pramatang, dan membenarkan pengkompil mengendalikan pembina lalai secara automatik. Tanpa sekatan ini, kod tidak sah boleh ditulis, membawa kepada kelakuan tidak boleh dipercayai atau ralat masa jalan.

Atas ialah kandungan terperinci Mengapa Mesti `this()` atau `super()` Menjadi Pernyataan Pertama dalam Pembina Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan