Rumah >Java >javaTutorial >Mengapa Mesti `this()` atau `super()` Menjadi Pernyataan Pertama dalam Pembina Java?
Java mewajibkan bahawa jika pembina memanggil ini() atau super(), panggilan ini mestilah pernyataan pertama pembina. Keperluan ini memastikan bahawa:
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.
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. } }
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
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 } }
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 } }
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!