久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

淺談Java 繼承接口同名函數問題

瀏覽:2日期:2022-08-24 09:03:50

在Java中如果一個類同時繼承接口A與B,并且這兩個接口中具有同名方法,會怎么樣?

動手做實驗:

interface A{ void fun();}interface B{ void fun();}interface C extends A,B{ }public class Test implements C{ @Override public void fun() { System.out.println('hehe'); } public static void main(String[] args) { new Test().fun(); }}

運行截圖:

淺談Java 繼承接口同名函數問題

上例的情況,可以正常編譯運行,輸出'hehe',因為A與B中的fun具有相同的簽名(參數個數與類型相同)

interface A{ void fun();}interface B{ int fun(int x);}interface C extends A,B{ }public class Test implements C{ @Override public void fun() { System.out.println('hehe1'); } @Override public int fun(int x) { return 0; } public static void main(String[] args) { new Test().fun(); }}

淺談Java 繼承接口同名函數問題

上例也是可以編譯運行的,因為A與B中的fun方法具有不同的函數簽名,本質上是兩個方法,分別實現即可。

interface A{ void fun();}interface B{ int fun();}interface C extends A,B{ }public class Test implements C{ @Override public void fun() { System.out.println('hehe'); } public static void main(String[] args) { new Test().fun(); }}

淺談Java 繼承接口同名函數問題

而這種具有相同函數簽名,但不同返回值的方法,是沒有辦法編譯的,接口C便已經無法編譯。

補充知識:java 類implements多個接口含有相同名字函數

java 類不能多繼承 class A extends B,C{}是不允許的

但能實現多個接口 class A implements B,C{}是可以的,而多個接口中如果出現相同名字函數:

interface in1{ public void fun1(); public void fun2();}interface in2{ public void fun1(); public void fun3();}

只許實現一個即可:

class fun implements in1,in2{ public void fun3() { // TODO Auto-generated method stub } public void fun1() { // TODO Auto-generated method stub } public void fun2() { // TODO Auto-generated method stub }}

以上這篇淺談Java 繼承接口同名函數問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 万全县| 运城市| 台东县| 合江县| 鸡东县| 东方市| 江城| 伊春市| 清水河县| 新巴尔虎右旗| 英吉沙县| 门头沟区| 崇左市| 景德镇市| 七台河市| 洛南县| 桦甸市| 三穗县| 吉安县| 杂多县| 萝北县| 大理市| 金湖县| 湖南省| 巴林左旗| 洛阳市| 兴隆县| 平山县| 扶余县| 和林格尔县| 江陵县| 八宿县| 咸丰县| 许昌县| 固始县| 嘉善县| 禄劝| 获嘉县| 满洲里市| 思茅市| 龙州县|