淺談Java 繼承接口同名函數(shù)問題
在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(); }}
運行截圖:

上例的情況,可以正常編譯運行,輸出'hehe',因為A與B中的fun具有相同的簽名(參數(shù)個數(shù)與類型相同)
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(); }}

上例也是可以編譯運行的,因為A與B中的fun方法具有不同的函數(shù)簽名,本質(zhì)上是兩個方法,分別實現(xiàn)即可。
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(); }}

而這種具有相同函數(shù)簽名,但不同返回值的方法,是沒有辦法編譯的,接口C便已經(jīng)無法編譯。
補充知識:java 類implements多個接口含有相同名字函數(shù)
java 類不能多繼承 class A extends B,C{}是不允許的
但能實現(xiàn)多個接口 class A implements B,C{}是可以的,而多個接口中如果出現(xiàn)相同名字函數(shù):
interface in1{ public void fun1(); public void fun2();}interface in2{ public void fun1(); public void fun3();}
只許實現(xiàn)一個即可:
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 繼承接口同名函數(shù)問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Android table布局開發(fā)實現(xiàn)簡單計算器2. 理解PHP5中static和const關(guān)鍵字3. jQuery 實現(xiàn)DOM元素拖拽交換位置的實例代碼4. php模擬實現(xiàn)斗地主發(fā)牌5. IntelliJ IDEA安裝插件的方法步驟6. phpstorm恢復(fù)默認(rèn)設(shè)置的方法步驟7. Vue封裝一個TodoList的案例與瀏覽器本地緩存的應(yīng)用實現(xiàn)8. Python random庫使用方法及異常處理方案9. Vuex localStorage的具體使用10. .Net Core使用Coravel實現(xiàn)任務(wù)調(diào)度的完整步驟

網(wǎng)公網(wǎng)安備