class FatherClass {
// 静态变量
public static String parent_StaticField = "父----静态变量";
// 变量
public String parent_Field = "父类----普通变量";
// 静态初始化块
static {
System.out.println(parent_StaticField);
System.out.println("父类------静态初始化块");
}
// 初始化块
{
System.out.println(parent_Field);
System.out.println("父类-----初始化块");
}
// 构造器
public FatherClass() {
System.out.println("父类--构造器");
}
}
class SubSon extends FatherClass {
// 静态变量
public static String son_StaticField = "子类--静态变量";
// 变量
public String son_Field = "子类--变量";
// 静态初始化块
static {
System.out.println(son_StaticField);
System.out.println("子类--静态初始化块");
}
// 初始化块
{
System.out.println(son_Field);
System.out.println("子类--初始化块");
}
// 构造器
public SubSon(){
System.out.println( "子类--构造器" );
}
public static void main(String[] args) {
System.out.println("子类-----main方法");
new SubSon();
}
}
运行子类的main方法,加载顺序如下
父----静态变量
父类------静态初始化块
子类–静态变量
子类–静态初始化块
子类-----main方法
父类----普通变量
父类-----初始化块
父类–构造器
子类–变量
子类–初始化块
子类–构造器
此顺序可以打debugger和眼睛查看顺序