I recently saw an interview question about the Java initialization sequence. Specially recorded:
Public class o <br/>{< br/> Public O (string s) <br/>{< br/> system. out. println (s ); <br/>}< br/> Public Class A <br/> {<br/> private o t2 = new O ("parent class instance variable 1" ); <br/> Private Static o T3 = new O ("parent static variable"); </P> <p> Public () <br/>{< br/> O t4 = new O ("parent class constructor "); <br/>}</P> <p> private o T5 = new O ("parent class instance variable 2 "); <br/>}< br/> Public Class B extends a <br/>{< br/> private o T6 = new O ("subclass instance variable 1 "); <br/> Private Static o T7 = new O ("subclass static variable"); </P> <p> Public B () <br/>{< br/> O T8 = new O ("subclass constructor "); <br/>}</P> <p> private o T9 = new O ("subclass instance variable 2 "); </P> <p> Public static void main (string [] ARGs) <br/>{< br/> B b1 = new B (); <br/> system. out. println ("========================================== "); <br/> B b2 = new B (); <br/>}</P> <p>
Some forums or blogs have provided answers.
Http://stackoverflow.com/questions/2007666/in-what-order-do-static-initializer-blocks-in-java-run
Http://java.chinaitlab.com/base/754921.html
Check thisProgramThe results are clear at a glance.
Parent static variable
Static subclass Variables
Parent class instance variable 1
Parent instance variable 2
Parent class Constructor
Subclass instance variable 1
Subclass instance variable 2
Subclass Constructor
============================================
Parent class instance variable 1
Parent instance variable 2
Parent class Constructor
Subclass instance variable 1
Subclass instance variable 2
Subclass Constructor