Napisałem poniższy kod i utworzony obiekt dla super klasy.Dlaczego kod statyczny podkategorii jest wykonywany?
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());
}
}
Po sprawdzeniu wyjście, to jest w następujący sposób:
super
sub
Super
2
2
wiem, że blok statyczny jest wykonywana tylko wtedy, gdy obiekt klasy jest inicjowany lub dowolny statyczny odesłania. Ale tutaj, nie zrobiłem żadnego z nich do klasy Sub. to dlaczego widzę "statyczną" blokową wydajność "pod", czyli podklasę?
Wykonywanie metody 'main' (zagnieżdżonej w klasie' Sub') jest statycznym odwołaniem. :) –
@KonstantinYovkov Myślałem o tym, ale nawet wtedy "sub" powinien być na pierwszym miejscu. Teraz ta wątpliwość została usunięta z odpowiedzi Bathsheby, ponieważ statyczne bloki są wykonywane w kolejności super i podklas. Dziękuję Ci. – AV94
@anil nie pierwszy, klasa 'Sub' nadal zależy od klasy' Super', która jest w związku z tym wykonywana jako pierwsza. – njzk2