java类加载顺序

时间:2021-11-29 17:34:38
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();
    }
}

  返回结果:

 java类加载顺序