Rumah > Java > javaTutorial > Mengapa Java tidak menyokong pelbagai warisan?

Mengapa Java tidak menyokong pelbagai warisan?

王林
Lepaskan: 2023-05-13 10:04:14
ke hadapan
961 orang telah melayarinya

Pertama sekali, fikirkan tentang senario ini Jika kelas A kini mewarisi kelas B dan kelas C, dan kaedah test() wujud dalam kedua-dua kelas B dan kelas C, maka apabila objek kelas A memanggil kaedah test(). , Bagaimana pula dengan memanggil test() kelas B? Atau bagaimana pula dengan ujian() kelas C? Tiada jawapan, jadi warisan berbilang tidak dibenarkan di Jawa.

Walau bagaimanapun, antara muka dalam Java boleh diwarisi berbilang, contohnya:

public interface A {
    void test();
}
public interface B {
    void test();
}
public interface C extends A, B{
}
Salin selepas log masuk

Mengapa antara muka boleh diwarisi?

Oleh kerana A, B dan C adalah semua antara muka, walaupun kaedah ujian ditakrifkan dalam kedua-dua antara muka A dan B, kerana antara muka hanya mengisytiharkan kaedah , ia sebenarnya tidak dilaksanakan ., jadi ia bukan masalah untuk antara muka C, ia hanya mewarisi pengisytiharan kaedah ujian() yang sama apabila menggunakannya, kelas pelaksanaan antara muka C diperlukan. Hanya laksanakan kaedah ujian() ini.

public class C1 implements C{
    public void test() {
        System.out.println("hello Hoeller");
    }
}
Salin selepas log masuk

Jadi tidakkah terdapat kaedah lalai dalam antara muka? Tidak bolehkah kita juga melaksanakan kaedah dalam antara muka?

Mari mengujinya secara langsung:

public interface A {
    default void test() {
        System.out.println("a");
    }
}
public interface B {
    default void test() {
        System.out.println("b");
    }
}
public interface C extends A, B{
}
Salin selepas log masuk

Pada masa ini, antara muka C akan menyusun dan melaporkan ralat Mesej ralat ialah:

com.hoeller. C mewarisi lalai yang tidak berkaitan untuk ujian () daripada jenis com.hoeller.A dan com.hoeller.B

Tidak kira sama ada ia diterjemahkan atau tidak, ralat dilaporkan, menunjukkan bahawa antara muka C tidak boleh mewarisi ujian kaedah lalai (dari kedua-dua antara muka pada masa yang sama. ).

Atas ialah kandungan terperinci Mengapa Java tidak menyokong pelbagai warisan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
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