Rumah >Java >javaTutorial >Bolehkah Kaedah Java Overridden Mempunyai Jenis Pulangan Kovarian, dan Apakah Sekatan terhadap Pengendalian Pengecualian?
Jenis Pulangan Kovarian dalam Java
Di Jawa, jenis pemulangan kaedah yang diganti boleh menjadi kovarian, bermakna ia boleh mengembalikan lebih banyak terbitan jenis daripada kaedah yang diganti. Walau bagaimanapun, peraturan ini tidak terpakai kepada pengecualian yang dilemparkan oleh kaedah yang ditindih.
Sekatan Lemparan Pengecualian dalam Kaedah Penggantian
Pengkompil menguatkuasakan sekatan berikut pada kaedah yang ditindih berkenaan pengecualian pengendalian:
Penjelasan
Sekatan ini memastikan bahawa subkelas tidak boleh memperkenalkan pengecualian diperiksa baharu atau lebih teruk kepada antara muka kaedah yang diganti. Ini diperlukan untuk polimorfisme, kerana ia membenarkan kod yang ditulis terhadap superclass untuk mengendalikan pengecualian dengan sewajarnya.
Contoh
Pertimbangkan contoh berikut:
class A { public void foo() throws FileNotFoundException { // ... } } class B extends A { @Override public void foo() throws SQLException { // ERROR: broader checked exception // ... } }
Dalam contoh ini, kelas A mentakrifkan kaedah foo yang membuang FileNotFoundException. Kelas B, yang melanjutkan A, cuba mengatasi foo dengan mengisytiharkan pengecualian yang disemak yang lebih luas, SQLException. Ini tidak dibenarkan kerana ia melanggar pengecualian sekatan melontar.
Rasional
Pengkompil menguatkuasakan sekatan ini kepada:
Atas ialah kandungan terperinci Bolehkah Kaedah Java Overridden Mempunyai Jenis Pulangan Kovarian, dan Apakah Sekatan terhadap Pengendalian Pengecualian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!