通过子类引用父类的静态字段,不会导致子类初始化。
class SuperClass {
static {
System.out.println("SuperClass static run");
}
public SuperClass() {
System.out.println("SuperClass init");
}
public static int value = 123;
}
class SubClass extends SuperClass {
static {
System.out.println("SubClass static run");
}
public SubClass() {
System.out.println("SubClass init");
}
}
public class Test {
public static void main(String[] args) {
System.out.println(SubClass.value);
}
}
image.png
如果类的值是final类型,类的static方法块和初始化工作不会被执行
image.png
网友评论