classA{staticAa1=newA(111);publicA(inti){System.out.println("newFather()"+i);}{System.out.println("fatherblock");}static{System.out.println("staticfatherblock");}}publicc...
class A{
static A a1=new A(111);
public A(int i){
System.out.println("new Father()"+i);
}
{
System.out.println("father block");
}
static {
System.out.println("static father block");
}
}
public class Init extends A{
static Init a2=new Init(222);
Init(){
this(12);
System.out.println("new son()");
}
Init(int x){
super(0);
System.out.println("new son(int)");
}
{
System.out.println("son block");
}
static {
System.out.println("static son block");
}
public static void main(String[] args){
new Init();
}
}
这段代码的结果是:
father block
new Father()111
static father block
father block
new Father()0
son block
new son(int)
static son block
father block
new Father()0
son block
new son(int)
new son()
为什么会出现这种调用循序,而且中间没有方法名的方法怎么也可以执行?
展开