加载顺序问题
来源:2-14 继承的初始化顺序
胖胖的工程师
2022-01-28 00:33:07
先加载父类在加载子类,是不是调用子类构造的时候只做一次?
1.这个问题意思是下图里面调用子类有参构造,是不是this()优先调用子类无参构造完成加载,是不是此时加载完成开始调用有参构造不在加载,如果thus()后面还有this调用子类其他的有参构造也不会在触发加载了
2. this()是不是最先执行的

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)子类对象构建完毕。
祝学习愉快~
相似问题