类的执行顺序

类的执行顺序

父类静态变量或者代码块 >> 子类静态变量或者方法 >> 父类变量、实例代码块、构造方法 >> 子类变量、实例代码块、构造方法

子类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Son extends Parent{
int num1 = 30;
static int num2 = 40;

{
System.out.println(num1);
System.out.println("Son实例代码块");
}

static {
System.out.println(num2);
System.out.println("Son静态代码块");
}
public Son(){
System.out.println("Son构造方法");
}

}

父类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Parent {

int num1 = 10;
static int num2 = 20;

{
System.out.println(num1);
System.out.println("Parent实例代码块");
}

static {
System.out.println(num2);
System.out.println("Parent静态代码块");
}
public Parent(){
System.out.println("Parent构造方法");
}
}

测试

1
2
3
4
5
public class Test {
public static void main(String[] args) {
Son son = new Son();
}
}

输出结果:

1
2
3
4
5
6
7
8
9
10
20
Parent静态代码块
40
Son静态代码块
10
Parent实例代码块
Parent构造方法
30
Son实例代码块
Son构造方法