文章目录
  1. 1. 一、概述:看JAVA编程思想反射一章总结的Demo。展示静态代码块,父类,子类,构造函数的初始化过程。
  2. 2. 二、代码:
  3. 3. 三、总结:

一、概述:看JAVA编程思想反射一章总结的Demo。展示静态代码块,父类,子类,构造函数的初始化过程。

二、代码:

1
2
3
4
5
6
7
8
9
//父类
public class OtherFather {
static{
System.out.println("4-->OtherFather 初始化了");
}
public OtherFather() {
System.out.println("6-->OtherFather构造函数");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//子类
public class Other extends OtherFather{

static final int AGE = 24;

static {
System.out.println("5-->Other被初始化了");
}

Other(){
System.out.println("7-->Other构造函数");
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//测试函数
public class This {
static Other other;//引用
static{
System.out.println("1-->This被初始化了");//1
}
This(){
System.out.println("3-->This的构造函数");//3
}
public static void main(String[] args) {
System.out.println("2-->main被执行了");//2
This ths = new This();

other = new Other();//用到某个类的时候才去加载某个类
}
}
1
2
3
4
5
6
7
1-->This 被初始化了
2-->main被执行了
3-->This的构造函数
4-->OtherFather 初始化了
5-->Other被初始化了
6-->OtherFather构造函数
7-->Other构造函数

三、总结:

  • 类加载时,先加载静态成员变量,静态代码块
  • 注意子类与父类的加载顺序为:
    • 父类的静态代码块->子类的静态代码块->父类的构造函数->子类的构造函数
  • 用到类时才加载类,才对类进行初始化
文章目录
  1. 1. 一、概述:看JAVA编程思想反射一章总结的Demo。展示静态代码块,父类,子类,构造函数的初始化过程。
  2. 2. 二、代码:
  3. 3. 三、总结: