Memajukan Kaedah Lalai Secara Eksplisit dalam Java
Java 8 memperkenalkan kaedah lalai sebagai cara untuk melanjutkan antara muka tanpa melanggar pelaksanaan sedia ada. Walau bagaimanapun, bagaimanakah anda menggunakan pelaksanaan lalai kaedah apabila ia ditindih atau bercanggah dengan pelaksanaan lalai lain?
Dalam kod yang disediakan, kaedah foo() ditakrifkan sebagai kaedah lalai dalam antara muka A dan ditindih dalam kelas B. Untuk mengakses pelaksanaan lalai A.foo() dalam kelas B, anda boleh menggunakan sintaks berikut:
A.super.foo();
Ini membolehkan anda menggunakan pelaksanaan lalai walaupun ia telah ditindih. Adalah penting untuk ambil perhatian bahawa rujukan A.super merujuk kepada jenis antara muka A, bukan objek kelas B.
public class ChildClass implements A, C { @Override public void foo() { // Override the default implementation System.out.println("ChildClass.foo()"); } public void callDefault() { // Invoke the A.foo() default implementation A.super.foo(); // Invoke the C.foo() default implementation C.super.foo(); } }
Dalam contoh ini, ChildClass melaksanakan kedua-dua antara muka A dan C, setiap satu dengannya sendiri kaedah foo() lalai. Dengan menggunakan A.super.foo() dan C.super.foo(), pelaksanaan lalai boleh diakses secara eksplisit, membenarkan tingkah laku tertentu atau penyelesaian konflik.
Atas ialah kandungan terperinci Bagaimanakah anda menggunakan pelaksanaan kaedah lalai secara eksplisit dalam Java apabila ia ditindih dalam kelas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!