class A {
static {
System.out.println("A1:父类静态代码区域");
}
{
System.out.println("A2:父类非静态代码区域");
}
public A() {
System.out.println("A3:父类构造器");
}
}
public class B extends A {
static {
System.out.println("B1:子类静态代码区域");
}
{
System.out.println("B2:子类非静态代码区域");
}
public B() {
System.out.println("B3:子类构造器");
}
}
// 测试类
public class Test {
public static void main(String[] args) {
B b1 = new B();
System.out.println("====");
B b2 = new B();
}
}
首先,在继承关系的两个类中,创建子类对象,一定会先执行
1.父类的静态代码块
2.子类的静态代码块
3.父类代码块
4.父类无参构造方法
5.子类代码块
6.子类无参构造方法
且代码块只执行一次
所有再次创建子类对象时不会执行代码块
1.父类静态代码块
2.子类静态代码块
3.父类无参构造方法
4.子类无参构造方法