Java中类实例化顺序:
-
静态属性,静态代码块。
-
普通属性,普通代码块。
-
构造方法。
先静态:父静态 > 子静态 。 优先级:父类 > 子类 , 静态代码块 > 非静态代码块 > 构造函数。
-
父类的静态成员变量 、 静态代码块加载
-
子类的静态成员变量、 静态代码块加载
-
父类成员变量和方法块加载
-
父类的构造函数加载
-
子类成员变量和方法块加载
-
public class LifeCycle { // 静态属性 private static String staticField = getStaticField(); // 静态代码块 static { System.out.println(staticField); System.out.println("静态代码块初始化"); } // 普通属性 private String field = getField(); // 普通代码块 { System.out.println(field); System.out.println("普通代码块初始化"); } // 构造方法 public LifeCycle() { System.out.println("构造方法初始化"); } // 静态方法 public static String getStaticField() { String statiFiled = "静态属性初始化"; return statiFiled; } // 普通方法 public String getField() { String filed = "普通属性初始化"; return filed; } public static void main(String[] argc) { new LifeCycle(); } / * 静态属性初始化 * 静态代码块初始化 * 普通属性初始化 * 普通代码块初始化 * 构造方法初始化 */ }
子类的构造函数加载