https://www.cnblogs.com/jhcelue/p/6766879.html 转载这位网友,谢谢。
package com.ying.test;
public class Beetle extends Insect {
private int k = printInit("Beetle.k initialized");
static {
System.out.println("Beetle static");
}
private static int x2 = printInit("static Beetle.x2 initialized");
public Beetle() {
System.out.println("k=" + k);
System.out.println("j=" + j);
}
public static void main(String[] args) {
System.out.println("Beetle constructor");
Beetle b = new Beetle();
}
}
package com.ying.test;
public class Insect {
private int i = 9;
protected int j;
private static int x1 = printInit("static Insect.x1 intialized");
static {
System.out.println("Insect static ");
}
static int printInit(String s) {
System.out.println(s);
return 47;
}
Insect() {
System.out.println("i=" + i + ",j=" + j);
j = 39;
}
}
运行结果:
static Insect.x1 intialized -------- 初始化父类静态变量
Insect static ------------------------初始化父类静态代码块
Beetle static ------------------------初始化子类静态代码块
static Beetle.x2 initialized ---------初始化子类静态变量
Beetle constructor -------------main函数入口开始执行
i=9,j=0 ------------ --初始化非静态变量,初始化父类构造函数
Beetle.k initialized - ----------------初始化子类非静态变量,
k=47 ------------------初始化子类构造函数
j=39 --------------------初始化子类构造函数