定义父类
public class Person{
{
System.out.println("父类代码块");
}
public Person(){
System.out.println("父类构造");
}
static{
System.out.println("父类静态代码块");
}
}
定义子类
public class Sun extends Person{
static{
System.out.println("子类静态代码块");
}
{
System.out.println("子类代码块");
}
public Sun(){
System.out.println("子类构造");
}
}
启动:
public class Main {
public static void main(String[] args) {
Sun sunSun = new Sun();
}
}
运行:
父类静态代码块
子类静态代码块
父类代码块
父类构造
子类代码块
子类构造
可以看出,当初始化子类对象时,优先向上级(父类加载)执行循序如下:
(1)静态代码块优先执行(父类>子类)。
(2)其次是父类的代码块>父类构造方法
(3)子类代码块>子类构造方法