构造顺序:
1、父类 static{...} 初始化块
2、子类 static{...} 初始化块
3、父类 {...} 初始化块
4、父类 构造函数
5、子类 {...} 初始化块
6、子类构造函数
<pre name="code" class="java"> public class Child extends Father{
//子类构造函数
public Child(){
System.out.println("child constructor");
}
//子类初始化块
{
System.out.println("Child init");
}
//子类静态初始化块
static int i = f();
public static int f(){
System.out.println("Static_Child");
return 1;
}
public static void main(String[] args){
// test1
Child c = new Child();
// test2
Father f = new Child();
// test3
Father ff = new Father();
}
}
class Father{
//父类构造函数
public Father(){
System.out.println("Father constructor");
}
//父类初始化块
{
System.out.println("Father init");
}
//父类静态初始化块
static int i = f();
public static int f(){
System.out.println("Static_Father");
return 1;
}
}
输出结果
test1:
Static_Father
Static_Child
Father init
Father constructor
Child init
Child constructor
test2:(同test1)
Static_Father
Static_Child
Father init
Father constructor
Child init
Child constructor
test3:
Static_Father
Static_Child
Father init
Father constructor