具有相同方法的多个接口最终由类实现

时间:2015-05-13 04:33:48

标签: java interface

在一次采访中,有两个接口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();

}

2 个答案:

答案 0 :(得分:4)

在Java中,两个接口都重叠,只有一种方法。不可能提供两个单独的实现(或选择您想要的实现)。如果两个接口方法定义具有不兼容的返回类型,则该类不能同时扩展两个接口。

因此,a.show()b.show()都会调用完全相同的方法。

在C#中,您可以消除歧义。

答案 1 :(得分:1)

您必须在show课程中实施Test

您只能在Test课程中实施一次。

请记住,根据定义,接口不能提供show的默认实现。

因此,在实例化Test类时,show方法在运行时只有一个实现。即使对象具有2个不同的父接口,它也将是相同的实现。