简记构建Java对象时的初始化顺序

changelog
2015-04-03 15:47:55 新建文档

1. 各模块初始化顺序

第一步,静态对象

父类

  • 父类静态域初始化(只初始化一次)
  • 父类静态初始化块(只初始化一次)

子类

  • 子类静态域初始化(只初始化一次)
  • 子类静态初始化块(只初始化一次)

第二步,非静态对象、构造方法

父类

  • 父类实例域初始化(每次构建对象时初始化)
  • 父类初始化块(每次构建对象时初始化)
  • 父类构造方法(每次构建对象时初始化)

子类

  • 子类实例域初始化(每次构建对象时初始化)
  • 子类初始化块(每次构建对象时初始化)
  • 子类构造方法(每次构建对象时初始化)

2. 总的结论

静态对象总是在第一次创建对象前就已经初始化完毕,初始化的顺序是从最顶端的父类到子类,只会初始化一次。然后就是从父类中,依次初始化非静态对象和构造器。

你可能感兴趣的:(java,面向对象,oop,构造)