个人认为下面代码中两次输出变量的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); //20 指向对象中的this代表的常量
System.out.println(a.i); //10 指向相同对象中super代表的常量
}
}
|
|