普通类初始化顺序
静态变量
静态代码块
普通变量
普通代码块
构造函数
public class Demo {
// 实例变量
String string = getString();
// 静态变量
static String staticString = getStaticString();
// 普通方法块
{
System.out.println("普通 方法块 执行");
}
// 静态代码块
static {
System.out.println("静态 代码块 执行");
}
// 构造方法
Demo(){
System.out.println("类构造 方法 执行");
}
// 用来初始化静态变量
public static String getStaticString(){
System.out.println("静态 变量 初始化");
return "静态变量";
}
// 用来初始化实例变量
public static String getString(){
System.out.println("实例 变量 初始化");
return "实例变量";
}
public static void main(String[] args) {
new Demo();
}
}
输出的结果:
静态 变量 初始化
静态 代码块 执行
实例 变量 初始化
普通 方法块 执行
类构造 方法 执行
子类(继承父类)初始化顺序
父类静态变量
父类静态代码块
子类静态变量
子类静态代码块
父类普通变量
父类普通代码块
父类构造函数
子类普通变量
子类普通代码块
子类构造函数
子类(继承抽象类和实现接口)初始化顺序
接口静态变量
抽象类静态变量
抽象类静态代码块
子类静态变量
子类静态代码块
抽象类普通变量
抽象类普通代码块
抽象类构造函数
子类普通变量
子类普通代码块
子类构造函数