class Insect {
int i = 9;
int j;
int k = prt("Insect.k initialized");
Insect() {
prt("i = " + i + ", j = " + j);
j = 39;
}
static int x1 =
prt("static Insect.x1 initialized");
static int prt(String s) {
System.out.println(s);
return 47;
}
}
public class Beetle extends Insect {
int k = prt("Beetle.k initialized");
Beetle() {
prt("k = " + k);
prt("j = " + j);
}
static int x2 =
prt("static Beetle.x2 initialized");
static int prt(String s) {
System.out.println(s);
return 63;
}
public static void main(String[] args) {
prt("Beetle constructor");
Beetle b = new Beetle();
}
}
结果:
static Insect.x1 initialized
static Beetle.x2 initialized
Beetle constructor
Insect.k initialized
i = 9, j = 0
Beetle.k initialized
k = 63
j = 39
结论:
静态变量在main函数调用之前初始化。
基类成员变量初始化-》基类构造函数-》 派生类成员变量初始化-》派生类构造函数