Я написал следующий код и создал объект для суперкласса.
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-класса. то почему я вижу "суб", то есть подкласс класса "статический вывод блока"?