前一篇文章写了一个类自身的初始化顺序.
这次写一下包含继承状况下的初始化顺序:
网上有一篇说可以这么总结初始化顺序,但是我认为是有错的.
父类--变量
父类--初始化块
父类--构造器
子类--变量
子类--初始化块
子类--构造器
首先,还有一个初始化过程,就是把所有变量都置null(基本类型置初始值 int 等0 ,bolean false,引用类型null)的过程
其次,变量指定初始化和代码块初始化的优先级是相等的,也就是说谁先写在前面就先执行:
比如
int son=1;
{
son=2;
}
结果是2
{
<span style="white-space:pre"> </span>son=2;
}
int son=1;
结果是1;
所以可以把指定初始化也当成是代码块的一种
也就是说{int son}