我有接口A& B具有相同名称但不同值的变量。
Interface A {
public static final int a = 50;
public void fun();
}
Interface B {
public static final int a = 60;
public void fun();
}
另一个接口C扩展了A&乙
Interface C extends A, B {
public void fun();
}
D类实现接口C
Class D implements C {
public void fun() {
/* Some code */
}
}
如果我使用D.a会怎样? 静态变量a中的哪一个由D类继承。
答案 0 :(得分:2)
都不是。执行此操作时,对常量a
的引用变得不明确,要求您明确指定哪一个:
public int fun() {
return a; // Get an error below
}
错误:对“a”的引用含糊不清
public int fun() {
return B.a; // Works fine
}
答案 1 :(得分:1)
它对编译器不明确,并且在使用时会导致错误,类似字段的内容不明确。由于该字段为static
,因此您可以针对类名进行解析,例如A.a
或B.a
。