Melaksanakan Pelbagai Antara Muka dengan Kaedah Bertindih: Membongkar Kriteria Pemilihan
Dalam pengaturcaraan berorientasikan objek, antara muka memainkan peranan penting dalam menentukan kontrak untuk kelas untuk dilaksanakan. Walau bagaimanapun, senario mungkin timbul apabila berbilang antara muka berkongsi nama kaedah dan tandatangan yang sama. Dalam kes sedemikian, adalah wajar untuk tertanya-tanya bagaimana pengkompil mengenal pasti pelaksanaan kaedah.
Timpa berbanding Kaedah Diwarisi
Apabila kelas melaksanakan berbilang antara muka, kaedah mereka mewarisi tandatangan yang sama. Walau bagaimanapun, kaedah hanya boleh ditindih sekali, jadi pengkompil mesti menentukan kaedah antara muka yang sedang ditindih. Kriteria pemilihan adalah berdasarkan peraturan berikut:
Contoh
Pertimbangkan contoh berikut:
interface A { int f(); } interface B { int f(); } class Test implements A, B { @Override public int f() { return 0; } }
Dalam kes ini, kedua-dua A dan B mentakrifkan kaedah f () dengan tandatangan yang sama. Memandangkan ia adalah @Override-equivalent, Test hanya perlu melaksanakan satu versi f(), tanpa mengira antara muka yang dimaksudkan untuknya. Pengkompil mengenal pasti kaedah yang dilaksanakan sebagai kaedah utama, dan tiada perbezaan lanjut diperlukan.
Keserasian dan Ketakserasian
Adalah penting untuk ambil perhatian bahawa kaedah diwarisi daripada antara muka yang berbeza mesti juga mematuhi peraturan mengatasi kaedah. Jika kaedah mempunyai jenis pemulangan atau anotasi yang bercanggah, ralat kompilasi akan berlaku.
Kesimpulan
Ringkasnya, apabila kelas melaksanakan berbilang antara muka dengan kaedah bertindih, pengkompil mengenal pasti kaedah mengatasi berdasarkan @Override-equivalence. Kaedah yang dilaksanakan berfungsi sebagai pelaksanaan tunggal untuk semua kaedah yang diwarisi dengan tandatangan yang sepadan. Ini membolehkan pewarisan tingkah laku biasa sambil memastikan keserasian dan mengelakkan konflik dalam definisi kaedah.
Atas ialah kandungan terperinci Bagaimanakah Java Menyelesaikan Kaedah Bertindih Apabila Melaksanakan Pelbagai Antara Muka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!