Rumah >Java >javaTutorial >Bagaimanakah Java Mengendalikan Perlanggaran Nama Kaedah dalam Pewarisan Antara Muka?
Warisan Antara Muka dengan Perlanggaran Nama Kaedah
Apabila berbilang antara muka mentakrifkan kaedah dengan nama dan tandatangan yang sama dan dilaksanakan oleh satu kelas, pengkompil mengenal pasti kaedah yang ditindih dengan mempertimbangkan berikut:
Keserasian:
Jika kaedah dalam antara muka adalah setara kaedah (mempunyai jenis pulangan yang serasi dan jenis parameter), maka hanya satu kaedah diwarisi. Dalam kes ini, pengkompil tidak perlu membezakan antara muka kaedah mana yang dimiliki.
Contoh:
Pertimbangkan kod berikut:
interface A { int f(); } interface B { int f(); } class Test implements A, B { // Only one @Override annotation required @Override public int f() { // Method implementation here return 0; } }
Dalam senario ini, kaedah f dalam Ujian dianggap sebagai pelaksanaan untuk kedua-dua A.f dan B.f.
Ketidakserasian:
Jika kaedah dalam antara muka bukan kaedah yang setara (mempunyai jenis pulangan yang tidak serasi atau jenis parameter), maka pengkompil akan mengeluarkan kompilasi ralat.
Contoh:
Dalam kod berikut, kaedah f dalam Ujian akan menghasilkan ralat penyusunan kerana jenis pulangan dalam A.f dan B.f adalah berbeza:
interface A { void f(); } interface B { int f(); } class Test implements A, B { @Override public int f() { // Method implementation here return 0; } }
Akibat:
Asalkan kaedah yang diwarisi daripada berbilang antara muka adalah serasi, tidak perlu membezakan kaedah mana yang dimiliki oleh antara muka yang mana. Pengkompil menganggapnya sebagai kaedah tunggal yang dilaksanakan oleh kelas.
Atas ialah kandungan terperinci Bagaimanakah Java Mengendalikan Perlanggaran Nama Kaedah dalam Pewarisan Antara Muka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!