我有三个接口A,B和C,以及一个D类。B和C扩展了A,而D实现了B和C。接口A有一个默认方法“ does”。我原本希望有一个编译时错误或运行时错误,但是该程序执行时没有错误。 B和C都继承自A。编译器不应该对在D上调用哪个继承方法感到困惑,因为D继承了两个默认方法,一个是C的,另一个是B的。 所有这三个接口和类都在单独的文件中定义。我已将代码顺序放置在下面的代码区域中,以进行演示。
public interface A {
default public void does(){
System.out.println("A");
}
}
public interface B extends A {
}
public interface C extends A {
}
public class D implements B, C {
}
public class Sample {
public static void main(String[] args) {
new D().does();
}
}