Rumah >Java >javaTutorial >Mengapa Mengalih Keluar Pembina Subkelas Menyebabkan \'Pembina Super Tersirat Tidak Ditakrifkan\' dalam Java?
Java Ralat: Implisit Super Constructor Undefined for Default Constructor
Dalam cubaan untuk mengurangkan lebihan kod, anda telah menghadapi ralat semasa mengalih keluar pembina daripada subkelas yang memanjangkan kelas abstrak. Ralat ini berpunca daripada pembina lalai tersirat yang dijana oleh pengkompil Java apabila kelas tidak mempunyai pembina yang ditakrifkan secara eksplisit.
Pembina lalai tidak mempunyai hujah dan bersamaan dengan public ACSubClass() { super(); }. Walau bagaimanapun, memandangkan BaseClass mengisytiharkan pembina, pembina lalai ini tidak tersedia, membawa kepada ralat masa kompilasi.
Sebab Ralat:
Punca punca isu ini terletak pada semantik warisan Java. Subkelas tidak mewarisi pembina kelas induknya secara automatik. Jika subkelas tidak mentakrifkan mana-mana pembina, ia secara tersirat mewarisi pembina lalai daripada kelas induknya.
Penyelesaian:
Untuk menyelesaikan ralat ini, anda mempunyai dua pilihan utama :
Key Takeaway:
Peraturan warisan pembina Java direka untuk menghalang subkelas daripada mencipta kejadian tidak sah bagi kelas induk mereka. Dengan mempertimbangkan dengan teliti keperluan pembina kedua-dua asas dan subkelas, anda boleh mengelakkan ralat masa jalan yang berkaitan dengan binaan yang hilang atau tidak sesuai.
Atas ialah kandungan terperinci Mengapa Mengalih Keluar Pembina Subkelas Menyebabkan \'Pembina Super Tersirat Tidak Ditakrifkan\' dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!