A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© chenglong25 中级黑马   /  2016-7-1 13:08  /  407 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

个人认为下面代码中两次输出变量的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代表的常量
    }
}


多态中的成员变量.png (112.23 KB, 下载次数: 6)

多态中的成员变量.png

2 个回复

倒序浏览
理解是正确的,A a = b,并没有新创建对象,而是父类引用指向子类对象
回复 使用道具 举报
谢谢,楼上的帮忙确认.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马