水滴石穿-子类示例化时,父子类的执行顺序

本文最后更新于:May 13, 2023 pm

积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里,不积小流无以成江海。齐骥一跃,不能十步,驽马十驾,功不在舍。面对悬崖峭壁,一百年也看不出一条裂缝来,但用斧凿,能进一寸进一寸,能进一尺进一尺,不断积累,飞跃必来,突破随之。

目录

子类实例化时,父、子类中的静态数据和构造方法的执行顺序是什么?

现有一个父类:

1
2
3
4
5
6
class Par{
static int age = 66;
Par(){
System.out.println("父类的构造方法");
}
}

还有一个子类,并继承父类par:

1
2
3
4
5
6
class Son extends Par{
static int mo = 13;
Son(){
System.out.println("子类的构造方法");
}
}

问:执行一下代码后,父类和子类中的静态数据和构造方法的执行顺序。(可参考完整代码)

1
Son s = new Son();

完整代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package com.tothefor;

/**
* @Author DragonOne
* @Date 2022/3/30 18:58
* @墨水记忆 www.tothefor.com
*/
public class Main {
public static void main(String[] args) {

Son s = new Son();

}
}
class Par{
static int age = 66;
Par(){
System.out.println("父类的构造方法");
}
}
class Son extends Par{
static int mo = 13;
Son(){
System.out.println("子类的构造方法");
}
}

//执行顺序
static int age = 66;
static int mo = 13;
Par()
Son()

解析

口诀:先静态,先父类。

  • 即:在父类和子类中都有静态数据时,会先父类再子类;在父类和子类都有构造函数的时候,会先父类再子类。

执行流程可见视频:(不能看的,见B站视频