继承中的代码执行顺序
1:基类的静态成员变量声明时初始化
2:基类的静态代码块
3:子类的静态成员变量声明时初始化
4:子类的静态代码块
5:基类的普通成员变量声明时初始化
6:基类的普通代码块
7:基类的构造函数
8:子类的普通成员变量声明时初始化
9:子类的普通代码块
10:子类的构造函数
原则总结(按优先级递减):
1:先静态,再普通
2:先基类,再子类
3:先执行成员变量声明,再执行代码块,最后执行构造函数
类 | 属性 | 方法 | |
final | 不可被继承 | 必须在构造函数结束前初始化,初始化后不可更改值 | 不可被覆盖 |
static | 一般不用来修饰类,可以用来声明私有静态类 | 属于类的属性,不声明类的实例就可以使用 | 属于类的方法,不声明类的实例就可以使用,该方法仅能访问本类的静态属性 |