class superclass{
static {
System.out.println("superclass init");
}
public static int value = 123;
}
class subclass extends superclass{
static {
System.out.println("subclass init");
}
}
class outputrestult{
public static void main(String[] args){
System.out.println(subclass.value);
//这里只会输出superclass init 和123,而不会输出subclass init
//对于静态字段,只有直接定义这个字段的类才会被初始化,因此通过其子类来引用
//父类中定义的静态字段,只会触发父类的初始化字段而不会触发子类的初始化
}
}
原文:http://www.cnblogs.com/xcyz/p/7594437.html