我想知道是否可以实现这样的代码?
public interface A {
public void execute();
}
public interface B {
public String execute();
}
class C implements A, B {
}
答案 0 :(得分:7)
没有。这是不允许的,因为编译器无法分辨您要使用的execute
版本。
如果要重载方法,则需要改变方法参数,例如:
public void execute(); public String execute(int someParam);
答案 1 :(得分:2)
不,你不能。
JLS要求每个方法都有不同的签名:
JLS 8.4 - “类的主体使用覆盖等效签名(第8.4.2节)将两个方法声明为成员是一个编译时错误。”
其中8.4.2将覆盖等效签名指定为方法签名,这些签名在类型擦除后具有相同的方法名称和相同的参数类型。