先上代码:
public class GrandFather {
static {
System.out.println("GrandFather");
}
public GrandFather() {
System.out.println("init GrandFather");
}
}
public class Father extends GrandFather {
static {
System.out.println("Father");
}
public static int value = 123;
public Father() {
System.out.println("init Father");
}
}
public class Son extends Father {
static {
System.out.println("Son");
}
static int a;
public Son() {
System.out.println("init Son");
}
}
public class Test {
public static void main(String[] args) {
// 1.
System.out.println(Son.value);
// 2.
// System.out.println(new Son());
}
}
1的输出结果是:
2的输出结果是
出现这种情况很有意思,这就需要学习JVM类加载机制了。