Java对象初始化顺序

public class Father {

    static final String STATIC_FIELD_01 = getFatherField("STATIC_FIELD_01");

    private String field01 = getMemberFatherField("field01");

    public Father() {
        System.out.println("父类构造方法!");
    }

    static {
        System.out.println("父类静态代码块!");
    }

    static final String STATIC_FIELD_02 = getFatherField("STATIC_FIELD_02");

    static String getFatherField(String str) {
        System.out.println("父类静态成员变量初始化-" + str);
        return str;
    }

    {
        System.out.println("父类代码块!");
    }

    private String field02 = getMemberFatherField("field02");

    String getMemberFatherField(String str) {
        System.out.println("父类成员变量初始化-" + str);
        return str;
    }

    static class Son extends Father {

        static final String STATIC_FIELD_01 = getSonField("STATIC_FIELD_01");

        private String field01 = getMemberSonField("field01");

        public Son() {
            System.out.println("子类构造方法!");
        }

        static {
            System.out.println("子类静态代码块!");
        }

        static final String STATIC_FIELD_02 = getSonField("STATIC_FIELD_02");

        static String getSonField(String str) {
            System.out.println("子类静态成员变量初始化-" + str);
            return str;
        }

        {
            System.out.println("子类代码块!");
        }

        private String field02 = getMemberSonField("field02");

        String getMemberSonField(String str) {
            System.out.println("子类成员变量初始化-" + str);
            return str;
        }
    }

    public static void main(String[] args) {
       Son son = new Son();
       System.out.println("-----------");
       Son s1 = new Son();
    }
}

输出结果

父类静态成员变量初始化-STATIC_FIELD_01
父类静态代码块!
父类静态成员变量初始化-STATIC_FIELD_02
子类静态成员变量初始化-STATIC_FIELD_01
子类静态代码块!
子类静态成员变量初始化-STATIC_FIELD_02
父类成员变量初始化-field01
父类代码块!
父类成员变量初始化-field02
父类构造方法!
子类成员变量初始化-field01
子类代码块!
子类成员变量初始化-field02
子类构造方法!
-----------
父类成员变量初始化-field01
父类代码块!
父类成员变量初始化-field02
父类构造方法!
子类成员变量初始化-field01
子类代码块!
子类成员变量初始化-field02
子类构造方法!
原文地址:https://www.cnblogs.com/hbxZJ/p/15515422.html