Rumah > Java > javaTutorial > Bagaimanakah Anda Boleh Memanfaatkan Perlaksanaan Kaedah Lalai secara Eksplisit dalam Java Apabila Ia Ditimpa?

Bagaimanakah Anda Boleh Memanfaatkan Perlaksanaan Kaedah Lalai secara Eksplisit dalam Java Apabila Ia Ditimpa?

DDD
Lepaskan: 2024-12-01 09:30:15
asal
547 orang telah melayarinya

How Can You Explicitly Invoke a Default Method's Implementation in Java When It's Overridden?

Mengatasi Kaedah Lalai dalam Java

Kaedah lalai yang diperkenalkan dalam Java 8 memberikan kebolehlanjutan kepada antara muka tanpa perlu mengubah suai pelaksanaan sedia ada. Walau bagaimanapun, persoalan timbul sama ada mungkin untuk menggunakan pelaksanaan lalai secara eksplisit apabila ia telah ditindih atau terdapat konflik disebabkan oleh berbilang pelaksanaan lalai dalam antara muka yang berbeza.

Pertimbangkan contoh berikut:

interface A {
    default void foo() {
        System.out.println("A.foo");
    }
}

class B implements A {
    @Override
    public void foo() {
        System.out.println("B.foo");
    }
    public void afoo() {
        // How to invoke A.foo() here?
    }
}
Salin selepas log masuk

Untuk menggunakan pelaksanaan lalai foo dalam kelas B, anda boleh gunakan A.super.foo().

public void afoo() {
    A.super.foo();
}
Salin selepas log masuk

Sintaks ini membolehkan anda mengakses pelaksanaan lalai asal walaupun kaedah telah ditindih dalam kelas pelaksana.

Dalam kes di mana berbilang antara muka mempunyai kaedah lalai dengan tandatangan yang sama, seperti antara muka A dan C yang kedua-duanya mempunyai kaedah foo, anda boleh memilih pelaksanaan lalai khusus yang anda mahu invoke:

public class ChildClass implements A, C {
    @Override
    public void foo() {
        A.super.foo(); // Accesses original foo() from A
        C.super.foo(); // Accesses original foo() from C
    }
}
Salin selepas log masuk

Sintaks ini memberikan fleksibiliti dalam memilih pelaksanaan lalai yang anda inginkan, atau anda juga boleh menggabungkan kedua-dua pelaksanaan ke dalam kaedah foo tersuai anda sendiri. Sintaks penyeruan kaedah diterangkan secara rasmi dalam bab 15 Spesifikasi Bahasa Java.

Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Memanfaatkan Perlaksanaan Kaedah Lalai secara Eksplisit dalam Java Apabila Ia Ditimpa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan