有关java语法的一个小细节疑惑
interface A{
int x=10;
}
class B{
int x=11;
}
public class Test extends B implements A{
//public static int x=12;
public static void main(String[] args) {
System.out.println(x);//编译器报错,有歧义!编译器无法自动判断有限调用哪个
}
}
以上编译器为什么会报错呢?Test中的静态main方法只能看见自己静态的和父类以及接口中的一些静态量,这个时候应该直接打印10啊,为什么会报错呢?父类中的非静态变量和接口中的静态常量重复定义也没什么错啊?请问编译器是怎么思考,怎么判断的?希望知道的高手详细的说明下!谢谢!