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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Student stu=new Student();这一语句发生后的一系列的动作步骤。一块来探讨 ,由于student类是继承自一个person的子类,不过我省掉了。
实例化一个子类对象,由于子类继承自父类,会先实例化父类对象,实例化父类对象,先将父类字节码文件装载进内存的方法区,
开辟内存空间,分配内存空间给父类的静态成员变量和静态方法,
1.静态变量默认初始化,
2父类.静态变量显式初始化,
3父类.静态代码块对其显式初始化(因为静态是随着类的记载而加载的)
然后是子类的字节码文件进入内存方法区,分配内存
4.子类静态变量的默认初始化,
5.子类静态变量的显示初始化,
6子类.静态代码块的显式初始化,

7.栈内存开辟内存空间给引用型变量stu

堆内存给父类开辟内存空间,
8.父类成员变量的默认初始化,
9.父类成员变量的显式初始化,
10.父类构造代码块,
11.父类的构造函数,
堆内存给子类对象开辟内存空间,
12.成员变量默认初始化,
13.子类显式初始化,
14。子类的构造代码块,
15.子类的构造方法,
将子类的堆内存地址赋值给引用

这是老师说的结合我自己的验证得来的,大家可以自己验证一下。这是我理解的方式,不知道对不对,欢迎大家指正!!!

堆内存给子类对象开辟内存空间,成员变量默认初始化,显式初始化,子类的构造代码块,子类的构造方法,将子类的堆内存地址赋值给引用。

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

1 个回复

倒序浏览
怎么没有人呢 知道啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马