代码执行顺序

初始化执行代码块的顺序:

(1)在初次new 一个Child类对象的时候,发现其有Parent类,则先加载Parent类,再加载Child类。
(2)加载Parent类
初始化Parent类的static属性,赋默认值;
执行Parent类的static初始化代码块;
(3)加载Child类
初始化Child类的static属性,赋默认值;
执行Child类的static初始化代码块;
(4)创建Parent类对象
初始化Parent类的非static属性,赋默认值;
执行Parent的instance初始化块;
执行Parent类的构造方法;
(5)创建Child类的对象
初始化Child类的非static属性,赋默认值;
执行Child类的instance初始化块;
执行Child类的构造方法。

总体上就是:父类静态→子类静态→父类非静态(包括构造方法)→子类非静态(包括构造方法)

猜你喜欢

转载自blog.csdn.net/weixin_43102313/article/details/87931603