Mengatasi Perlanggaran Tandatangan Kaedah dalam Pelaksanaan Antara Muka Java
Dalam situasi di mana dua antara muka berbeza berkongsi tandatangan kaedah, melaksanakan kedua-dua antara muka dalam satu kelas boleh memberikan cabaran, kerana Java tidak membenarkan pelbagai pelaksanaan yang sama kaedah.
Pendekatan Konvensional: Penggantian Kaedah
Java biasanya menyelesaikan perlanggaran tandatangan kaedah melalui mengatasi kaedah. Jika subkelas mentakrifkan kaedah dengan tandatangan yang sama dengan kelas induknya, kaedah subkelas menggantikan kaedah induk. Walau bagaimanapun, pendekatan ini tidak sesuai apabila melaksanakan antara muka yang berbeza.
Penyelesaian Alternatif: Komposisi
Java menawarkan penyelesaian alternatif melalui gubahan. Daripada melaksanakan kedua-dua antara muka secara langsung, buat kelas yang mewakilkan kepada kelas yang berasingan yang melaksanakan setiap antara muka.
interface ISomething { void doSomething(); } interface ISomething2 { void doSomething(); } class Class1 implements ISomething { @Override public void doSomething() {} } class Class2 implements ISomething2 { @Override public void doSomething() {} } class CompositeClass { Class1 class1; Class2 class2; void doSomething1() { class1.doSomething(); } void doSomething2() { class2.doSomething(); } }
Dalam contoh ini, CompositeClass mengarang Class1 dan Class2, melaksanakan kedua-dua ISomething dan ISomething2 tanpa mentakrifkan kaedah pendua secara eksplisit. Kaedah doSomething1 dan doSomething2 diwakilkan kepada kelas masing-masing, mengekalkan gelagat yang diingini.
Pendekatan ini berkesan menyelesaikan perlanggaran tandatangan kaedah dengan membenarkan pelaksanaan antara muka yang berbeza dalam satu kelas tanpa kerumitan kaedah mengatasi atau logik bersyarat.
Atas ialah kandungan terperinci Bagaimanakah Kelas Java Boleh Mengendalikan Konflik Tandatangan Kaedah Apabila Melaksanakan Berbilang Antara Muka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!