两个具有相同方法名称和签名的接口。但是由单个类实现那么编译器将如何识别哪个方法是为哪个接口?
Ex:
interface A{
int f();
}
interface B{
int f();
}
class Test implements A, B{
public static void main(String... args) throws Exception{
}
@Override
public int f() { // from which interface A or B
return 0;
}
}
在接口中,我们只是声明方法,实现这两个接口的具体类理解的是只有一个方法(正如你所描述的在返回类型中有相同的名称)。所以应该不会有什么问题。您将能够在具体类中定义该方法。
但是当两个接口有相同名称但不同返回类型的方法时,你在具体类中实现了两个方法:
请看下面的代码:
public interface InterfaceA {
public void print();
}
public interface InterfaceB {
public int print();
}
public class ClassAB implements InterfaceA, InterfaceB {
public void print()
{
System.out.println("Inside InterfaceA");
}
public int print()
{
System.out.println("Inside InterfaceB");
return 5;
}
}
当编译器获得方法“public void print()”时,它首先在InterfaceA中查找并获得它。但是它仍然给出编译时错误,返回类型与InterfaceB的方法不兼容。
所以编译器就乱套了。
通过这种方式,您将无法实现两个具有相同名称但返回类型不同的方法的接口。