Java Static code block and constructor initialization sequence
What is the initialization sequence of the Static code block and constructor in Java?
For example, it is also a type of question that is frequently used in pen test questions.
The three classes are ClassA, ClassB, and ClassC. B inherits from A and C from B.
public class ClassA { static{ System.out.println(init in static A); } public ClassA() { System.out.println(init in ctor A); }}
public class ClassB extends ClassA{ static{ System.out.println(init in static B); } public ClassB() { System.out.println(init in ctor B); }}
public class ClassC extends ClassB{ static{ System.out.println(init in static C); } public ClassC() { System.out.println(init in ctor C); }}
Run it and check the result. Is it consistent with your expectation ???
Init in static
Init in static B
Init in static C
Init in ctor
Init in ctor B
Init in ctor C
Loading sequence:
Class loading-> static code block running-> static variable initialization-> corresponding constructor running