实现接口并扩展具有相同方法的类

时间:2018-06-25 15:21:45

标签: java interface

对接口实现和扩展类的怀疑很小。 这是我的代码。

public class intercheck extends inter implements in {
  public static void main(String[] args) {
    intercheck a = new intercheck();
    a.show();
  }
}

class inter {
  public void show() {
    System.out.println("Class Show");
 }
}

interface in {
  public void show() {
    System.out.println("Interface show");
  }
}

我运行了这段代码,并知道将显示class inter show()方法。

想知道除此之外的逻辑。

3 个答案:

答案 0 :(得分:1)

在超类中实现show()并用其扩展类时,该类从超类继承了show(),从而实现了接口要求的内容。

答案 1 :(得分:0)

简短答案:

interface in {
   default void show() {
     System.out.println("Interface show");
   }
}

仅当实现类没有实现时才执行    show()(默认值仅是从Java 8引入的-接口中声明的方法根本不能包含主体)。

class intercheck在其父类inter中实现了,所以...

class inter {
  public void show() {
     System.out.println("Class Show");
  }
}

执行。这就是背后的逻辑。

答案 2 :(得分:0)

  

扩展包含默认方法的接口时,可以   请执行以下操作:

     

一点也不提及默认方法,这使您的扩展接口可以继承默认方法。

使用Java Docs中的方法,您已经从class inter中获得了方法。即使未设置默认值,它也会使用您的超类方法。

最后,您可以阅读

接口方法

  

接口中的默认方法和抽象方法的继承方式如下   实例方法。

     

但是,当类或接口的超类型时   提供具有相同签名的多个默认方法,Java   编译器遵循继承规则来解决名称冲突。

来自Java Docs