Java语句初始化执行顺序
需要考虑的就是 java 中构造方法、实例初始化、静态初始化执行顺序
我们先拿单个的类来讲,执行顺序是 静态初始化块 -> 初始化块 -> 构造器
****我们知道,当子类继承父类时,执行顺序是先执行父类,再执行子类。根据上述的顺序,我们可以得到如下的执行顺序:
- 父类静态初始化块
- 子类静态初始化块
- 父类初始化块
- 父类构造器
- 子类初始化块
- 子类构造器
证明
package com.lxc;
public class 顺序 {
public static void main(String[] args) {
test2 t = new test3();
System.out.println(t.k);
}
}
class test2 implements Cloneable {
static {
System.out.println("父类静态代码块");
}
static int a = 1;
int k = 100;
public test2() {
System.out.println("父类构造函数");
}
{
System.out.println("父类代码块");
}
}
class test3 extends test2 {
public test3() {
super();
System.out.println("子类构造函数");
}
int k = 5;
static int a = 10;
static {
System.out.println("子类静态代码块");
}
{
System.out.println("子类代码块");
}
}
输出
父类静态代码块
子类静态代码块
父类代码块
父类构造函数
子类代码块
子类构造函数
100