大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 實例講解Java接口多繼承

實例講解Java接口多繼承

更新時間:2020-10-28 17:52:51 來源:動力節點 瀏覽1308次

  我們都知道Java的類只能繼承一個類,但可以實現多個接口。然而很多人其實不知道Java中的接口卻可以繼承多個接口,這兩者之前并不沖突。本文就來說一說Java接口多繼承的相關知識。


  進入主題之前,為了更方便我們理解Java接口多繼承,我們先來拓展一下。Java為什么只支持單繼承呢?

  我們不妨假設Java支持多繼承,舉個例子,在這里有個A類,我們又編寫了兩個類B類和C類,并且B類和C類分別繼承了A類,并且對A類的同一個方法進行了覆蓋。如果此時我們再次編寫了一個D類,并且D類以多繼承的方式同時集成了B類和C類,那么D類也會繼承B類和C類從A類中重載的方法,如下圖所示。那么問題來了,D類也開始犯迷糊了,我到底應該哪個繼承哪個類中的方法呢,因為類是結構性的,這樣就會造成結構上的混亂。這就是多繼承的菱形繼承問題。


  同時我們知道C++是支持多繼承的,因為它解決了這個問題(我對C++不太熟,查了下資料,好像是通過虛基類實現的吧)。但是Java本著簡單的原則,舍棄了多繼承。

  好,進入正題。我們還是舉個實例來演示一下接口的多繼承。

  鸚鵡是鳥,鳥會飛,也會唱歌。我們來模仿一下:


  一、會飛的接口

  package multiex;

  public interface Flyable {

  public void fly();

  }


  二、會唱歌的接口

  package multiex;

  public interface Singable {

  public void sing();

  }


  三、鳥的接口

  鳥的接口繼承上面兩個接口

  package multiex;

  //雖然這個接口沒有定義方法,但是會繼承下來兩個方法

  public interface Bird extends Flyable,Singable {

  }


  四、鸚鵡類,實現鳥接口

  package multiex;

  //鸚鵡類

  public class Swallow implements Bird {

  @Override

  public void fly() {

  System.out.println("鸚鵡會飛");

  }

  @Override

  public void sing() {

  System.out.println("鸚鵡會唱歌");

  }

  }


  五、測試類

  package multiex;

  public class Main {

  public static void main(String[] args) {

  Swallow swallow = new Swallow();

  swallow.fly();

  swallow.sing();

  }

  }

  運行結果:

  上面演示了接口的多繼承,那么這里存在一個問題。如果多個接口中有重名的方法怎么辦?比如如下:

  package multiex;

  interface A {

  void m();

  }

  //注意:方法返回值不一樣

  interface B {

  int m();

  }

  class C implements A, B {

  public void m() {

  System.out.println("void m()");

  }

  public int m() {

  System.out.println("int m()");

  }

  }

  public class Test {

  public static void main(String[] args) {

  C c1 = new C();

  c1.m();

  }

  }


  這時,編譯將無法通過。如下圖所示:

  image.png


  因為在Java中,

  方法名+參數(不含返回值類型)唯一確定一個方法。

  方法名+參數(不含返回值類型)唯一確定一個方法。

  方法名+參數(不含返回值類型)唯一確定一個方法。

  所以當返回值不同時,Java認為這還是同一個方法,會與其中一個接口的返回類型沖突。導致編譯錯誤。

  同理,當返回值相同時,那這完全就是同一個方法了,實現類實現一次這個方法就好了。如下圖:

  image.png


  通過本文的實例講解,相信小伙伴們已經徹底搞清楚了Java接口多繼承,也知道了Java接口多繼承和Java類單繼承的差別。想要掌握更多的Java接口知識,本站的Java接口教程是你的不二選擇,海量高質量Java接口知識點羅列清晰,幫你查漏補缺!


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 四虎1515hh免费大炮社区 | 亚洲免费资源 | 国产成人精品日本亚洲麻豆 | 草逼网站 | 色国产精品一区在线观看 | 免费看成人频视在线视频 | 天天干天天爽天天射 | 国产色图区 | 亚洲欧洲日韩国产一区二区三区 | 久久这里一区二区精品 | 国产毛片一级 | 精品99在线观看 | 国产精品白丝喷水在线观看 | aaa国产一级毛片 | 亚洲国产精品久久精品成人 | 亚洲国产影院 | 国产精品久久久久一区二区 | 香蕉伊人久久 | 91久久精品国产亚洲 | 老司机一级毛片 | 男人女人真曰批的视频动态 | 亚洲国产模特在线播放 | 爱爱视频在线观看 | 亚洲网站视频 | 99久久久免费精品免费 | 中文字幕欧美日韩高清 | 日本美女视频韩国视频网站免费 | 日韩一区二区精品久久高清 | 亚洲国产综合网 | 99在线热视频 | 欧美香蕉在线 | 国产一区二区在免费观看 | 久久香蕉国产线看观看亚洲片 | 99久久免费国产精品特黄 | 国产 福利 在线 | 5060网午夜一级毛片在线看 | 奇米777第四 | 国产免费高清视频 | 国产97在线视频观看 | 国产亚洲精aa在线观看香蕉 | 涩涩视频免费 |