亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一文講通Java為什么不支持多繼承原理

 更新時(shí)間:2023年03月27日 16:40:19   作者:Hoeller  
這篇文章主要為大家介紹了java為什么不支持多繼承原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

首先,思考這么一種場(chǎng)景,假如現(xiàn)在A類繼承了B類和C類,并且B類和C類中,都存在test()方法,那么當(dāng)A類對(duì)象調(diào)用test()方法時(shí),該調(diào)用B類的test()呢?還是C類的test()呢?是沒有答案的,所以Java中不允許多繼承。

但是,Java中接口是可以多繼承的,比如:

public interface A {
    void test();
}
public interface B {
    void test();
}
public interface C extends A, B{
}

為什么接口可以?

因?yàn)槎际茿、B、C都是接口,就算A、B兩個(gè)接口中都定義了test方法,因?yàn)榻涌谥兄皇?strong>聲明了方法,并沒有真正實(shí)現(xiàn)方法,所以對(duì)于C接口而言并不會(huì)照成困擾,對(duì)于C接口而言它只是繼承了同一個(gè)test()方法的聲明而已,在使用時(shí)需要C接口的實(shí)現(xiàn)類來實(shí)現(xiàn)這個(gè)test()方法就可以了。

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

那么接口中不是有default方法嗎?那不是也可以在接口中來實(shí)現(xiàn)方法嗎?

我們直接來測(cè)試一下:

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{
}

此時(shí)C接口會(huì)編譯報(bào)錯(cuò),報(bào)錯(cuò)信息為:

com.hoeller.C inherits unrelated defaults for test() from types com.hoeller.A and com.hoeller.B

翻不翻譯都無所謂了,反正就是報(bào)錯(cuò)了,表示C接口不能同時(shí)繼承兩個(gè)接口中default方法test()。

如果你問,那為什么C++中可以支持多繼承,那得解釋菱形繼承、虛繼承,本文就不分析了(因?yàn)槲乙膊恢溃?/p>

以上就是一文講通Java為什么不支持多繼承原理的詳細(xì)內(nèi)容,更多關(guān)于Java不支持多繼承的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java實(shí)現(xiàn)Floyd算法

    java實(shí)現(xiàn)Floyd算法

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)Floyd算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • SpringCloud修改Feign日志記錄級(jí)別過程淺析

    SpringCloud修改Feign日志記錄級(jí)別過程淺析

    OpenFeign源于Netflix的Feign,是http通信的客戶端。屏蔽了網(wǎng)絡(luò)通信的細(xì)節(jié),直接面向接口的方式開發(fā),讓開發(fā)者感知不到網(wǎng)絡(luò)通信細(xì)節(jié)。所有遠(yuǎn)程調(diào)用,都像調(diào)用本地方法一樣完成
    2023-02-02
  • SpringMVC請(qǐng)求的路徑變量里面寫正則表達(dá)式的方法

    SpringMVC請(qǐng)求的路徑變量里面寫正則表達(dá)式的方法

    這篇文章主要介紹了SpringMVC請(qǐng)求的路徑變量里面寫正則表達(dá)式的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • java集合框架的體系結(jié)構(gòu)詳細(xì)說明

    java集合框架的體系結(jié)構(gòu)詳細(xì)說明

    最近在一本J2EE的書中看到了很不錯(cuò)的對(duì)集合框架的說明文章
    2012-11-11
  • Java練習(xí)之潛艇小游戲的實(shí)現(xiàn)

    Java練習(xí)之潛艇小游戲的實(shí)現(xiàn)

    這篇文章主要和大家分享一個(gè)Java小練習(xí)——利用Java編寫一個(gè)潛艇小游戲,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-03-03
  • Java中的多態(tài)用法實(shí)例分析

    Java中的多態(tài)用法實(shí)例分析

    這篇文章主要介紹了Java中的多態(tài)用法,較為詳細(xì)的分析了java中多態(tài)的概念與相關(guān)的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • SpringBoot增強(qiáng)Controller方法@ControllerAdvice注解的使用詳解

    SpringBoot增強(qiáng)Controller方法@ControllerAdvice注解的使用詳解

    這篇文章主要介紹了SpringBoot增強(qiáng)Controller方法@ControllerAdvice注解的使用詳解,@ControllerAdvice,是Spring3.2提供的新注解,它是一個(gè)Controller增強(qiáng)器,可對(duì)controller進(jìn)行增強(qiáng)處理,需要的朋友可以參考下
    2023-10-10
  • Java讀取傳輸FTP文件實(shí)現(xiàn)示例

    Java讀取傳輸FTP文件實(shí)現(xiàn)示例

    本文主要介紹了Java讀取傳輸FTP文件方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 在 Spring Boot 項(xiàng)目中實(shí)現(xiàn)文件下載功能

    在 Spring Boot 項(xiàng)目中實(shí)現(xiàn)文件下載功能

    這篇文章主要介紹了在 Spring Boot 項(xiàng)目中實(shí)現(xiàn)文件下載功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • springboot中如何替換class文件

    springboot中如何替換class文件

    這篇文章主要介紹了springboot中如何替換class文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02

最新評(píng)論