original source: http://1001javatips.com/initializationorder.htm
See also static initialization.
■ The general order of class initialization is:
1 – First all static items are initialized, in their source code order..
2 – Then all member variables are initialized.
3 – Lastly the constructor is called.
The general order of initialization for classes with inheritance is:
First, parent static items, then child static items
Then parent member variables, followed by the parent constructor
Then child member variables, followed by the child constructor