子类继承父类的初始化顺序:
- 父类静态内容(静态变量、静态代码块)
- 子类静态内容(静态变量、静态代码块)
- 父类非静态内容(普通变量、普通代码块)
- 父类构造方法
- 子类非静态内容(普通变量、普通代码块)
- 子类构造方法
其中,同为静态内容的静态变量和静态代码块的执行顺序,与具体代码的先后顺序相关。非静态内容的普通变量和普通代码块类似。
新建一个父类
public class Father {
private String name = "执行父类普通变量";
private static String text = "执行父类静态变量";
public Father(){
System.out.println("执行父类构造方法");
}
static {
System.out.println(text);
System.out.println("执行父类静态代码块");
}
{
System.out.println(name);
}
}
再建一个子类,并继承前面的父类
public class Son extends Father{
private String name = "执行子类普通变量";
private static String text = "执行子类静态变量";
public Son(){
System.out.println("执行子类构造方法");
}
static {
System.out.println(text);
System.out.println("执行子类静态代码块");
}
{
System.out.println(name);
}
public static void main(String[] args) {
new Son();
}
}
执行结果:
执行父类静态变量
执行父类静态代码块
执行子类静态变量
执行子类静态代码块
执行父类普通变量
执行父类构造方法
执行子类普通变量
执行子类构造方法