- 加载父类,执行静态代码(包括静态成员变量和静态代码块,从上到下执行)
 - 加载子类,执行静态代码
 - 初始化父类对象属性(非静态的成员变量初始化为0)
 - 执行父类匿名代码块(非静态的成员变量的赋值语句和匿名代码块)
 - 执行父类构造方法(构造方法中的语句)
 - 初始化子类对象属性
 - 执行子类匿名代码块
 - 执行子类构造方法
 
蓝色为创建对象时会执行的代码,黄底为父类执行的代码。
当类加载结束后,不会再执行静态代码。
package com.briup.day10;class Father {String fa = "fa";static String fb = "fb";static {System.out.print("1. Father static code ");System.out.println("and static var: " + fb);}{System.out.println("3. Father var: " + fa);System.out.println("4. Father lambda code");}public Father() {System.out.println("5. Father Constuctor");}}class Son extends Father {String sa = "sa";static String sb = "sb";static {System.out.print("2. Son static code ");System.out.println("and static var: " + sb);}{System.out.println("6. Son var: " + sa);System.out.println("7. Son lambda code");}public Son() {System.out.println("8. Son Constuctor");}}public class StaticsTest {public static void main(String[] args) {new Son();System.out.println("--------");new Son();}}
运行结果为:
- Father static code and static var: fb
 - Son static code and static var: sb
 - Father var: fa
 - Father lambda code
 - Father Constuctor
 - Son var: sa
 - Son lambda code
 - Son Constuctor
 
- Father var: fa
 - Father lambda code
 - Father Constuctor
 - Son var: sa
 - Son lambda code
 - Son Constuctor
 
