Java Static code block and constructor initialization sequence, javastatic
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
Copyright Disclaimer: This article is an original article by the blogger and cannot be reproduced without the permission of the blogger.