java初始化顺序(言简意赅)
父类静态域(静态变量,静态代码块)>子类静态域 > 父类非静态域(非静态变量,非静态代码块,构造函数)> 子类非静态域
-
父类代码
public class Animal { public static String name="1动物(父类静态变量)"; public String nickName="5动物小名(父类非静态变量)"; static { System.out.println(name); System.out.println("2父类静态代码块"); } { System.out.println(nickName); System.out.println("6父类非静态代码块"); } public Animal() { System.out.println("7父类构造方法"); } }
-
子类代码
public class Cat extends Animal{ public static String name="3猫(子类静态变量)"; public String nickName="8猫的小名(子类非静态变量)"; static { System.out.println(name); System.out.println("4子类静态代码块"); } { System.out.println(nickName); System.out.println("9子类非静态代码块"); } public Cat() { System.out.println("10子类构造方法"); } public static void main(String[] args) { new Cat(); } }
3.结果
1动物(父类静态变量) 2父类静态代码块 3猫(子类静态变量) 4子类静态代码块 5动物小名(父类非静态变量) 6父类非静态代码块 7父类构造方法 8猫的小名(子类非静态变量) 9子类非静态代码块 10子类构造方法
-
总结
个人简单总结,如有不足,敬请谅解,互相学习
-