练习基本的Java概念时,我编写了这段代码,它的输出非常奇怪。在解释我的问题之前,请参见下面的代码-
public class Demo3{
public static void main(String args[]){
A x=new A();
B y=new B();
x.m1();
y.m1();
}
}
class A{
int a=5;
void m1(){
System.out.println(a);
}
}
class B extends A{
int a=1;
}
并且编译器显示的输出是-
5
5
现在我的问题是,由于B继承了A,因此输出不应为5和1,因为x.m1()应该绑定到类A的m1()上,而y.m1()应该绑定到a的m1()上B类,在B类中,int a将隐藏继承的A类的int a。请告诉我我是否缺少某些概念或有什么问题?