加载顺序问题

来源:2-14 继承的初始化顺序

胖胖的工程师

2022-01-28 00:33:07

先加载父类在加载子类,是不是调用子类构造的时候只做一次?
1.这个问题意思是下图里面调用子类有参构造,是不是this()优先调用子类无参构造完成加载,是不是此时加载完成开始调用有参构造不在加载,如果thus()后面还有this调用子类其他的有参构造也不会在触发加载了
2. this()是不是最先执行的

61f2c6d128b7996f05001000.jpg

写回答

1回答

好帮手慕小蓝

2022-01-28

同学你好~

1.this不是最优先执行的。

2.执行的顺序是:

(1)当创建某个类的对象时,先根据类的声明(class XXX extends XXX)加载其父类的信息;

(2)实例化父类对象,如果父类也有更高级的父类,则递归执行此步骤;

(3)实例化父类对象时,在执行构造方法之前,要先对所有静态成员进行初始化;

(4)根据构造方法的this关键字,优先调用this指向的构造方法;

(5)完成父类构造方法中的代码;

(6)父类对象初始化结束,开始初始化子类对象;

(7)在执行子类构造方法前,要先对所有静态成员进行初始化;

(8)根据构造方法的this关键字,优先调用this指向的构造方法;

(9)完成子类构造方法中的代码;

(10)子类对象构建完毕。

祝学习愉快~


0

0 学习 · 9886 问题

查看课程