欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Java 繼承接口同名函數(shù)問(wèn)題

 更新時(shí)間:2020年09月24日 10:34:34   作者:-微笑以后-  
這篇文章主要介紹了淺談Java 繼承接口同名函數(shù)問(wèn)題。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

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

動(dòng)手做實(shí)驗(yàn):

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();
  }
}

運(yùn)行截圖:

上例的情況,可以正常編譯運(yùn)行,輸出"hehe",因?yàn)锳與B中的fun具有相同的簽名(參數(shù)個(gè)數(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();
  }
}

上例也是可以編譯運(yùn)行的,因?yàn)锳與B中的fun方法具有不同的函數(shù)簽名,本質(zhì)上是兩個(gè)方法,分別實(shí)現(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ù)簽名,但不同返回值的方法,是沒(méi)有辦法編譯的,接口C便已經(jīng)無(wú)法編譯。

補(bǔ)充知識(shí):java 類implements多個(gè)接口含有相同名字函數(shù)

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

但能實(shí)現(xiàn)多個(gè)接口 class A implements B,C{}是可以的,而多個(gè)接口中如果出現(xiàn)相同名字函數(shù):

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

只許實(shí)現(xiàn)一個(gè)即可:

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ù)問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論