子类与父类的静态代码块、匿名代码块和构造器的先后执行顺序
创建父类 Person
public class Person {
static {
System.out.println("父类静态代码块");
}
{
System.out.println("父类匿名代码块");
}
public Person() {
System.out.println("父类构造器");
}
}
创建子类 Student
public class Student extends Person{
static {
System.out.println("子类静态代码块");
}
{
System.out.println("子类匿名代码块");
}
public Student() {
System.out.println("子类构造器");
}
public static void main(String[] args) {
Student s1 = new Student(); //在main方法中new一个子类对象
}
}
执行结果:
总结
执行顺序:父类静态代码块 > 子类静态代码块 > 父类匿名代码块 > 父类构造器 > 子类匿名代码块 > 子类构造器