关于初始化块

初始化块————
可以用static修饰,并且与其他成员一样,有static修饰的初始化块属于类,没有static修饰的初始化块属于对象实例,下面能看到具体的表现。

普通初始化块在对象初始化时,在构造器之前执行(实例变量的声明也可以看作是初始化块代码),执行完初始化块(按顺序)后才会调用构造器创建对象
静态初始化块在类初始化阶段(在创建第一个对象之前)进行,所以比普通初始化块执行要早,而且只执行一次(类没必要重复加载),而普通初始化块则要每次创建实例时都要执行一次。

(静态)初始化块都是有一个共性,就是在执行本类的初始化块之前,会先沿着继承链找到最上面的父类,沿着继承链依次向下执行各个父类的初始化块,最后才执行本类的初始化块,完成本类(或本类实例)的初始化
【因为Java系统加载并初始化某个类时,总是保证该类的所有父类(包括直接父类和间接父类)全部加载并初始化】

猜你喜欢

转载自www.cnblogs.com/woshi123/p/12457731.html