类在使用时,会加载进内存里,然后进行成员属性等初始化。
顺序:
1、在加载完后,所有成员属性都会有一个默认值,比如 int 类型默认为0。
2、按照定义顺序,初始化父类静态属性和静态代码块,如果父类还有父类,一直逆向初始化父类,直至根父类
3、按照定义顺序,初始化子类静态属性和静态代码块
4、按照定义顺序,初始化父类普通属性和普通代码块
5、执行父类构造器
6、按照定义顺序,初始化子类普通属性和普通代码块
7、执行子类构造器
总体而言,先父类,后子类;先静态属性,后普通属性;先属性,后构造器。
https://blog.csdn.net/xyajia/article/details/80922329
注意:
1、静态属性只初始化一次,在第一次使用时初始化后,无论创建多少次对象, 都不会再初始化。
2、关于构造器:
1)如果在类中,没有定义 构造器,编译器会自动创建一个无参构造器。反之,如果定义了构造器,编译器就不会再添加无参构造器了。
2)如果父类只定义了有参构造器,而没有无参构造器,并且在子类中没有 显示调用 父类的有参构造器,则在初始化时会报错。因在子类中,默认会调用父类的无参构造器,而父类没有无参构造器,就出错了。