1.按Java理论,父类与子类的初始化顺序为:
1.初始化父类静态变量
2.初始化父类的静态代码块
3.初始化子类的静态变量
4.初始化子类的静态代码块
5.父类的非静态变量
6.父类的非静态代码块
7.父类的构造函数
8.子类的非静态变量
9.子类的非静态代码块
10.子类的构造函数
不好记忆,10个呢,如何高效记忆?
通过分析不难发现,这里涉及到的关键字可以通过两种策略来进行分类:维度和优先级
下表种每一行表示一个维度下的优先级
维度\优先级 | 1 | 2 | 3 |
---|---|---|---|
1(1) | 静态 | 非静态 | |
2(0.1) | 父类 | 子类 | |
3(0.01) | 变量 | 代码快 | 构造函数 |
每次从所有维度选择一个组合起来,括号里是默认该维度的权重,这样计算优先级的加权之和,越小则优先级越高