子类父类加载顺序

1.创建第一个子类对象时:

父类静态块->被调子类静态块->父类动态块->父类无参构造器->被调子类动态块->被调子类无参构造器

2.创建第一个另一子类对象时:

被调子类静态块->父类动态块->父类无参构造器->被调子类动态块->被调子类无参构造器

注意:1.父类静态块只会被调用一次。

          2.这里是“另一子类”,就是与第一个子类不同名的子类

3.创建第二个同名子类对象:

父类动态块->父类无参构造器->被调子类动态块->被调子类无参构造器

注:同名之类被创建之后,其同名静态块不会再次执行。

 

总结:

1..不同名子类之间的静态块不会相互调用,也没有任何联系。

2.不同名子类在创建对象之前,如果父类的静态块没有被调用过,那么就先调用父类静态块,此时再看本子类是不是第一次被加载,如果是,那么接着调用本子类静态块;如果在此之前父类静态块已被调用(即父类已被加载过一次),那么将不再调用父类静态块,然后再看是否调用自己的静态块。
参考:https://blog.csdn.net/baidu_38760069/article/details/79915652

你可能感兴趣的:(java基础,java)