use*_*844 17 java static non-static ambiguous
main方法尝试访问var,但会导致调用模糊.为什么?无论如何,无法从静态上下文访问(可见?)Base1中的实例变量var.
class Base1 {
int var;
}
interface Base2 {
public static final int var = 0;
}
class Test extends Base1 implements Base2 {
public static void main(String args[]) {
System.out.println("var:" + var);
}
}
Run Code Online (Sandbox Code Playgroud)
Sot*_*lis 17
如果标识符在类型中命名了几个可访问的(§6.6)成员字段
T,则字段访问是不明确的,并且发生编译时错误.
只有在类型可访问且声明成员或构造函数允许访问时,才能访问引用类型的成员(类,接口,字段或方法)或类类型的构造函数:
它没有区分实例字段访问是否会在static上下文中导致编译错误.
请注意,你可能有
public static void main(String args[]) {
Test test = new Test();
System.out.println("var:" + test.var);
}
Run Code Online (Sandbox Code Playgroud)
你仍然有歧义.