为什么子类的静态代码被执行?
2022-09-01 19:58:18
我已经编写了以下代码,并为超类创建了对象。
class SuperClass{
static int a=2;
static int b(){
return 2;
}
int c(){
return 2;
}
SuperClass(){
System.out.println("Super");
}
static {
System.out.println("super");
}
}
public class Sub extends SuperClass{
Sub(){
System.out.println("Sub");
}
static {
System.out.println("sub");
}
static int b(){
return 3;
}
int c(){
return 3;
}
public static void main(String ax[]){
SuperClass f =new SuperClass();
System.out.println(f.c());
System.out.print(SuperClass.b());
}
}
当我检查输出时,它如下所示:
super
sub
Super
2
2
我知道静态块仅在初始化类的对象或进行任何静态引用时才执行。但是在这里,我没有对Sub类进行任何这些,那么为什么我看到“sub”即sub类的静态块输出呢?