对象的创建流程:
1、使用java命令将源码(.java)进行编译,生成字节码文件(.class)
2、javac命令执行字节码文件
3、将字节码文件加载进虚拟机(JVM),静态方法区开始加载静态资源
4、JVM从静态方法区读取主函数,并加载进栈(执行栈被创建了出来)
5、main函数开始执行, 创建对象的代码,如:Son son = new Son();
6、在堆内存中开辟对象的内存空间,并分配地址
7、创建成员变量并进行默认初始化
8、子类构造函数从非静态方法区加载进栈开始执行
9、第一句先执行父类的构造函数
10、父类构造函数执行,为子类继承到的成员变量进行初始化(对象内存空间里的父类空间) 11、父类构造函数弹栈执行完成
12、子类构造函数继续执行,此时先对成员变量进行显式初始化
13、再执行子类构造函数的内容,进行针对性初始化
14、执行完成,子类构造函数弹栈,将对象的内存空间地址赋予相应的引用变量 方法区:(Method Area) 元数据区:(Metaspace)