注意:static成员只在类初始加载时,初始化一次。
- 父类static代码块
- 父类static成员变量
- 子类static代码块
- 子类static成员变量
- 父类成员变量
- 父类构造代码块
- 父类构造函数
- 子类成员变量
- 子类构造代码块
- 子类构造函数
class Father {
static {
System.out.println("父类static代码块");
}
private static int value1 = method1();
private int value2 = method2();
{
System.out.println("父类构造代码块");
}
Father() {
System.out.println("父类构造函数");
}
public static int method1() {
System.out.println("父类static成员变量");
return 0;
}
public int method2() {
System.out.println("父类成员变量");
return 0;
}
}
class Son extends Father {
static {
System.out.println("子类static代码块");
}
private static int value1 = method3();
private int value2 = method4();
{
System.out.println("子类构造代码块");
}
Son() {
System.out.println("子类构造函数");
}
public static int method3() {
System.out.println("子类static成员变量");
return 0;
}
public int method4() {
System.out.println("子类成员变量");
return 0;
}
}
public class Test {
public static void main(String[] args) {
Son f = new Son();
System.out.println();
Son f2 = new Son();
}
}
输出结果:
父类static代码块
父类static成员变量
子类static代码块
子类static成员变量
父类成员变量
父类构造代码块
父类构造函数
子类成员变量
子类构造代码块
子类构造函数
父类成员变量
父类构造代码块
父类构造函数
子类成员变量
子类构造代码块
子类构造函数
进程已结束,退出代码为 0
参考:
https://blog.csdn.net/zfx2013/article/details/89453482?ops_request_misc=&request_id=&biz_id=102&utm_term=java%E5%88%9D%E5%A7%8B%E5%8C%96%E8%BF%87%E7%A8%8B&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-4-89453482.pc_search_ecpm_flag&spm=1018.2226.3001.4187



