1、java类加载顺序:
(1) 父类静态代码块(包括静态初始化块,静态属性,但不包括静态方法)
(2) 子类静态代码块(包括静态初始化块,静态属性,但不包括静态方法 )
(3) 父类非静态代码块( 包括非静态初始化块,非静态属性 )
(4) 父类构造函数
(5) 子类非静态代码块 ( 包括非静态初始化块,非静态属性 )
(6) 子类构造函数
2、代码:
父类:
public class Father { private String pro="1"; private static String staticPro="2"; { System.out.println("父普通代码块"); System.out.println(this.pro); System.out.println(this.staticPro); } static { System.out.println("父静态代码块"); } public Father() { System.out.println("父类构造"); System.out.println(this.pro); System.out.println(this.staticPro); } }
子类:
public class Son extends Father { private String pro="1"; private static String staticPro="2"; { System.out.println("子普通代码块"); System.out.println(this.pro); System.out.println(this.staticPro); } static { System.out.println("子静态代码块"); } public Son() { System.out.println("子类构造"); System.out.println(this.pro); System.out.println(this.staticPro); } }
测试:
public class test { public static void main(String[] args) { Son son = new Son(); } }
返回结果: