【发布时间】:2020-11-29 08:25:20
【问题描述】:
我们有一个 interface 和 class 没有关系,每个都有具有相同签名的方法。这些可以与可以正常编译的类相关。
interface A {
void test();
}
class B {
public void test() {
System.out.println("Test");
}
}
public class MultipleLevelInheritance extends B implements A {
public static void main(String[] args) {
new MultipleLevelInheritance().test();
}
}
但是当我们对 a 变量做同样的事情时,它会导致歧义。
interface A {
int a = 10;
}
class B {
public static int a = 9;
}
public class MultipleLevelInheritance extends B implements A {
public static void main(String[] args) {
System.out.println(a); //The field a is ambiguous
}
}
即使我们在B 中将a 保留为final,它仍然会导致错误。为什么对方法有效而对变量无效?
【问题讨论】:
标签: java variables inheritance methods ambiguity