我已经声明了一个接口
public interface A {
public void print();
}
另一个界面
public interface B extends A {
public void print();
}
然后上课
public class C implements A,B {
@Override
public void print() {
System.out.println(B.i);
}
}
请告诉我为什么当两个接口都有相同名称的方法以及编译器如何确定正在实现哪个接口的方法时,没有编译时错误?
提前致谢
答案 0 :(得分:3)
用Java实现接口意味着保证在接口中声明的方法被实现到类中。
在您的示例中,这意味着,实现接口A的每个类都有一个print函数,它不带参数并返回void。接口B也是如此。每个实现B的类都有一个print-funtction,它不带参数并返回一个void。
如果现在C类实现接口A和B,这意味着,您的类必须实现在A中声明的所有方法以及在B中声明的所有方法。在您的示例中,这些方法重叠,但不要冲突。因此没有问题。
答案 1 :(得分:2)
您的方法一次实现两种接口方法。
答案 2 :(得分:0)
接口B覆盖接口方法..
当你使用Interface时,你会对Java说:“我会实现这个东西” 一旦B覆盖A你就对Java说:“我也会在B上实现同样的东西”;
所以,如果你实现这一次..基本上就像你为他们两个实现了这个方法..这不是正确的方法来使用它