Uczę się funkcji bloku statycznego w rdzeniu Java.Dlaczego blok statyczny klasy Child nie jest wykonywany, gdy uzyskuje się dostęp do Child.name?
public class ClassResolution {
static class Parent {
public static String name = "Sparsh";
static {
System.out.println("this is Parent");
name = "Parent";
}
}
static class Child extends Parent {
static {
System.out.println("this is Child");
name = "Child";
}
}
public static void main(String[] args) throws ClassNotFoundException {
System.out.println(Child.name);
}
}
Myślałem wyjście byłoby:
this is Parent
this is Child
Child
ale rzeczywisty wynik jest:
this is Parent
Parent
i nie mam pojęcia dlaczego.
widziałem to, ale mają jeszcze pytanie dlaczego „dziecko” nie dostać wydrukować – sparsh610
zobaczyć https://ideone.com/tnBVKJ podczas korzystania 'Child.name' nie zainicjować 'Child' klasa –
@ YassinHajaj To nie jest duplikat - sytuacja jest inna. – glglgl