当一个类实现两个接口时,接口具有相同的方法名称但不同的返回类型为什么它不起作用? java会为此编译错误,为什么我们不能重载interface_1类中的方法?
import static java.lang.System.out;
interface A1{
int add();
}
interface A2{
String add();
}
public class interface_1 implements A1,A2{
public static void main(String args[]){
out.println("a");
}
@Override
public String add() {
// TODO Auto-generated method stub
return null;
}
@Override
public int add() {
// TODO Auto-generated method stub
return 2;
}
}
答案 0 :(得分:3)
你不能这样做的原因与你单独在其返回类型上重载方法的原因相同:Java缺少一种语法来选择当方法名称和参数相同时要调用哪种方法。
写作时
object res = obj.add();
编译器不知道您要调用的两个add
方法中的哪一个,即返回int
或String
的方法,因为它们的名称和参数相同。