class A
{
int i = 1;
}class B extends A
{
int i = 2;
public static void main(String[] args)
{
A a = new B();//这里的句柄类型A起了什么作用?JAVA的隐藏机制是怎样实现的?
System.out.println(a.i);
}
}
运行结果:
1哪位兄台能告诉我?
{
int i = 1;
}class B extends A
{
int i = 2;
public static void main(String[] args)
{
A a = new B();//这里的句柄类型A起了什么作用?JAVA的隐藏机制是怎样实现的?
System.out.println(a.i);
}
}
运行结果:
1哪位兄台能告诉我?
a.i访问的是类A(因为此时JVM认为是类A的实例)的属性i,所以是1而不是2,如果((B)a).i就是2了.