Java类的加载顺序
一、知识
静态:
(1) 父类静态成员和静态代码块
(2) 子类静态成员和静态代码块
非静态:
(3) 父类非静态成员和非静态代码块
(4) 父类构造函数
(5) 子类 非静态成员和非静态代码块
(6) 子类构造函数
二、例子
public class test4 {
public static void main(String[] args) {
B b = new B();
}
}
class A
{
static{
System.out.println("A(父类)的静态代码块");
}
{
System.out.println("A(父类)的代码块(非静态)");
}
A(){
System.out.println("A(父类)的构造");
}
}
class B extends A{
static{
System.out.println("B(子类)的静态代码块");
}
{
System.out.println("B(子类)的代码块(非静态)");
}
B(){
System.out.println("B(子类)的构造");
}
}
输出:
A(父类)的静态代码块
B(子类)的静态代码块
A(父类)的代码块(非静态)
A(父类)的构造
B(子类)的代码块(非静态)
B(子类)的构造
B(子类)的静态代码块
A(父类)的代码块(非静态)
A(父类)的构造
B(子类)的代码块(非静态)
B(子类)的构造
三、练习
四、额外的
构造代码块: 在类中直接定义没有任何修饰符、前缀、后缀的代码块即为构造代码块。每创建一个对象时就会执行一次,且优先于构造函数。