classfather{ PublicFather () {System.out.println ("... Constructor method for parent class ... "); } Static{System.out.println ("... Static code block for parent class ... "); } {System.out.println ("... Normal code block for parent class ... "); } }classSonextendsfather{ PublicSon () {System.out.println ("... How to construct a subclass ... "); } Static{System.out.println ("... Static code block for subclasses ... "); } {System.out.println ("... Generic code block for subclasses ... "); } } Public classCodeblock { Public Static voidMain (string[] args) {son son=NewSon (); }}
Execution Result:
... Static code block for parent class ... Static code blocks for subclasses ... Normal block of code for the parent class ... How to construct the parent class ... Generic code block for subclasses ... How to construct a subclass ...
From the implementation results can be seen:
Static code blocks are always executed first, and static code blocks of the parent class take precedence over the static code blocks of subclasses.
Common code blocks take precedence over construction methods
Normal code blocks and construction methods of the parent class take precedence over subclasses
Static code blocks, ordinary blocks of code, execution order of constructors