标题: 关于变量的一的小问题 [打印本页] 作者: 王虎 时间: 2012-10-7 10:33 标题: 关于变量的一的小问题 请结合内存图说明一下里面的 i 是怎么个变化情况
class A {
public int i = 10;
}
class B extends A{
public int i = 20;
}
public class Test{
public static void main(String args[]){
B b = new B();
A a = b;
System.out.println(b.i);
System.out.println(a.i);
}
} 作者: AngieFans85 时间: 2012-10-7 10:52
这个需要什么内存图啊.
a.i就是A对象的成员变量i,b.i就是B类的成员变量i.作者: 黑马连家华 时间: 2012-10-7 10:57
...我不会用苹果的画图软件啊...作者: 黑马连家华 时间: 2012-10-7 11:03
...B b = new B();的时候建立了一个B类的实例对象(在堆中),它获得了父类所有非私有方法,父类中同名方法或属性被隐藏,所以b.i = 20
A a = b;这时候将对象b的引用(在栈中)传递给a(也在栈中),这时候是父类a引用指向了子类对象(就是上一步的new B()实例),产生了多态,父类引用得不到子类特有的方法,所以a.i值为10作者: 谭立文 时间: 2012-10-7 11:07
............