对于静态变量、静态初始化块、变量、初始化块、构造器的初始化顺序
我们现在来试验下,其代码如下:
输出结果是:
静态变量
静态初始化块
变量
初始化块
构造器
为了验证是否这个输出结果和他们的排列顺有关,现在把它们的顺序改变下,
其输出的结果和上面的一下,现在我们就可以证明了
它们的初始化顺序是(静态变量、静态初始化块)>(变量、初始化块)>构造器。
括号中的顺序是按照他们的排列顺序而定的。
如果这里出现继承?
他们的初始化的顺序又是怎样的?
请看以下代码:
运行一下上面的代码,输出的结果:
父类--静态变量
父类--静态初始化块
子类--静态变量
子类--静态初始化块
父类--变量
父类--初始化块
父类--构造器
子类--变量
子类--初始化块
子类--构造器
我们可以看到并不是父类完全初始化完毕后才进行子类的初始化,实际上子类的静态变量和静态初始化块的初始化是在父类的变量、初始化块和构造器初始化之前就完成了。我们得出的结果就是。。。