在一次采访中,有两个接口B和C各自具有相同的方法public m1()A类实现B和C,如果A类必须实现方法m1,则实现的方法将是哪个接口。
当时我也很困惑,你可以建议使用哪种方法
public interface A {
public void show();
}
public interface B {
public void show();
}
public class Test implements A, B {
public static void main(String[] args) {
A a;
B b;
Test t = new Test();
a = t;
a.show();
b = t;
b.show();
}
答案 0 :(得分:4)
在Java中,两个接口都重叠,只有一种方法。不可能提供两个单独的实现(或选择您想要的实现)。如果两个接口方法定义具有不兼容的返回类型,则该类不能同时扩展两个接口。
因此,a.show()
和b.show()
都会调用完全相同的方法。
在C#中,您可以消除歧义。
答案 1 :(得分:1)
您必须在show
课程中实施Test
。
您只能在Test
课程中实施一次。
请记住,根据定义,接口不能提供show
的默认实现。
因此,在实例化Test
类时,show
方法在运行时只有一个实现。即使对象具有2个不同的父接口,它也将是相同的实现。