Di Java, apabila berbilang antara muka mentakrifkan kaedah dengan tandatangan yang sama, melaksanakannya dalam kelas boleh membawa kepada kesamaran. Tidak seperti pelaksanaan antara muka eksplisit C#, Java tidak menawarkan penyelesaian langsung kepada isu ini.
Untuk menyediakan penyelesaian bagi senario ini, Java menguatkuasakan bahawa kelas boleh menyediakan hanya satu pelaksanaan untuk kaedah dengan tandatangan tertentu. Oleh itu, melaksanakan dua antara muka berbeza dengan kaedah yang dinamakan serupa adalah tidak mungkin.
Walau bagaimanapun, terdapat pendekatan alternatif untuk mengendalikan situasi ini:
Komposisi:
Daripada melaksanakan kedua-dua antara muka secara langsung, buat kelas komposit yang mengandungi tika kedua-dua antara muka (cth., ISsomething dan ISsomething2). Kelas komposit boleh mewakilkan panggilan kepada kaedah antara muka yang sesuai, dengan berkesan memisahkan pelaksanaan.
class CompositeClass { ISomething something1; ISomething2 something2; void doSomething1() { something1.doSomething(); } void doSomething2() { something2.doSomething(); } }
Corak Reka Bentuk Penyesuai:
Gunakan kelas penyesuai untuk menyesuaikan kaedah satu antara muka dengan tandatangan yang lain. Ini membolehkan pelaksanaan yang lebih fleksibel di mana tingkah laku boleh disesuaikan berdasarkan pemanggil sebenar.
class ISomethingAdapter implements ISomething2 { ISomething something; @Override public void doSomething() { // Custom behavior based on the caller something.doSomething(); } }
Dengan menggunakan pendekatan alternatif ini, pembangun Java boleh menyelesaikan perlanggaran nama kaedah dengan berkesan sambil mengekalkan integriti kod mereka dan mengelakkan kekaburan dalam pelaksanaan kaedah.
Atas ialah kandungan terperinci Bagaimanakah Java Menyelesaikan Perlanggaran Nama Kaedah dalam Pelaksanaan Antara Muka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!