创建对象的执行流程:
1 new通过构造器来开辟内存空间,其中包含了父类子对象的空间;
2 new把这个刚刚创建的对象引用给出构造器,new的工作完成了;
3 构造器(非委派)会先去调用父类构造器;
4 父类构造器先执行显示初始化语句;
5 父类构造器再执行自己的方法体内容,父类构造器工作结束了;
6 回到子类构造器,开始执行显示初始化语句;
7 再执行构造器的方法体内容;
8 返回这个引用,结束。
你的这个执行过程是子类构造器,第一句执行了,super()语句,调用了父类的构造器,而父类的第一句super()语句它对应的父类为object类,也就没什么作用,而show()语句,因为还没有初始化完,只打印创建时的默认值0,然后遇到return返回子类构造器,,然后进行显示初始化,num=8.然后执行子类构造器内语句,Son 初始化了....8,然后调用子类show方法,输出Son show...8 |