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

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

Patricia Arquette
Lepaskan: 2024-12-19 14:17:09
asal
878 orang telah melayarinya

Why Must `this()` and `super()` Be the First Statements in a Java Constructor?

Mengapa This() dan super() Mesti Digunakan Sebelum Semua Pernyataan Lain dalam Pembina?

Java menguatkuasakan peraturan ketat iaitu this() dan super() panggilan mestilah pernyataan pertama dalam pembina. Sekatan ini wujud untuk memastikan pemulaan kelas induk yang betul sebelum pelaksanaan pembina kelas anak.

Sebagai contoh, kod berikut akan mencetuskan ralat masa kompilasi kerana super(c) bukan pernyataan pertama dalam MySubClass pembina:

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

Walau bagaimanapun, ini boleh dielakkan dengan mengubah suai kod kepada:

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

Mengapa Pemesanan Penting

Panggilan super() dalam pembina subkelas memulakan pembolehubah contoh kelas induk dan memanggil pembina induk. Ini memastikan bahawa kelas induk dimulakan sepenuhnya sebelum pembina subkelas meneruskan.

Jika super() tidak diperlukan untuk menjadi pernyataan pertama, adalah mungkin untuk melaksanakan operasi yang bergantung pada kelas induk yang dimulakan sebelum ini. ia sebenarnya telah dimulakan, berpotensi membawa kepada tingkah laku yang tidak ditentukan.

Pengecualian dan Penyelesaian

Walaupun pengkompil memerlukan ini() dan super() digunakan dahulu, ia tidak menyekat pelaksanaan logik dalam pembina. Logik boleh diletakkan dalam satu ungkapan atau dihantar ke super() atau ini() panggilan.

Contohnya:

public class MySubClass extends MyClass {
    public MySubClass(int a, int b) {
        super(Arrays.asList(new Object[] { a, b }));  // OK
    }
}
Salin selepas log masuk

Kesimpulan

Sekatan bahawa this() dan super() mestilah pernyataan pertama dalam pembina berfungsi untuk memastikan permulaan objek yang betul dan mencegah kemungkinan ralat yang disebabkan oleh pramatang akses kepada ahli kelas induk sebelum mereka dimulakan dengan betul. Ini menguatkuasakan susunan pelaksanaan pembina yang boleh diramal untuk kelas, memastikan integriti dan konsistensi objek.

Atas ialah kandungan terperinci Mengapa Mesti `this()` dan `super()` Menjadi Pernyataan Pertama dalam Pembina Java?. 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