对象的构造过程:
- 分配内存空间
- 实例域被自动初始化为默认值
- 如果有显示初始化代码,则执行该代码(如:调用方法赋值)
- 静态初始化块被执行
- 实例初始化块被执行
- 构造器被执行
如果类中同时具有静态域和静态初始化块,将按照在它们类中出现的顺序被处理。
Java程序初始化的顺序
- 父类静态变量
- 父类静态代码块
- 子类静态变量
- 子类静态代码块
- 父类非静态变量
- 父类非静态代码块
- 父类构造器
- 子类非静态变量
- 子类非静态代码块
- 子类构造器
对象的构造过程:
如果类中同时具有静态域和静态初始化块,将按照在它们类中出现的顺序被处理。
Java程序初始化的顺序