探究JavaBean的初始化顺序

本文旨在研究Java Bean初始化时,静态变量、静态代码块、普通变量、普通初始化块、父子构造器的执行顺序。

父类

/**
 * parent类
 *
 * @author yuan
 * @since 2018/9/5
 */
public class Parent {
     

    // 静态变量
    public static String pStaticField = "父类--静态变量";

    // 静态初始化块
    static {
     
        PrintUtil.print(pStaticField);
        PrintUtil.print("父类--静态初始化块");
    }

    // 变量
    public String pField = "父类--变量";

    // 初始化块
    {
     
        PrintUtil.print(pField);
        PrintUtil.print("父类--初始化块");
    }

    // 构造器
    public Parent() {
     
        PrintUtil.print("父类--构造器");
    }

}

子类


/**
 * son 类
 *
 * @author yuan
 * @since 2018/9/5
 */
public class Son extends Parent {
     

    // 静态变量
    public static String sStaticField = "子类--静态变量";

    // 静态初始化块
    static {
     
        PrintUtil.print(sStaticField);
        PrintUtil.print("子类--静态初始化块");
    }

    // 变量
    public String sField = "子类--变量";

    // 初始化块
    {
     
        PrintUtil.print(sField);
        PrintUtil.print("子类--初始化块");
    }

    // 构造器
    public Son() {
     
        PrintUtil.print("子类--构造器");
    }

}

Main

public static void main(String[] args) {
     
	new Son();
}

输出

父类--静态变量
父类--静态初始化块
子类--静态变量
子类--静态初始化块
父类--变量
父类--初始化块
父类--构造器
子类--变量
子类--初始化块
子类--构造器

细细品味一下吧.

你可能感兴趣的:(Java,java,bean,初始化,顺序)