import org.omg.Messaging.SyncScopeHelper;
public class Demo5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//分析:
//分析 输出结果
//调用子类之前会先调用父类的静态方法 静态代码块Fu
//调用自身的静态方法 静态代码块Zi
//在然后调用自身的构造方法, 调用子类构造方法之前有super();调用父类的构造方法,
//因为java中是分层初始化的,先初始化父类,再初始化子类,所以先走的父类构造,但是在执行
//父类构造时,发现父类有构造代码块,构造代码块是优先于构造方法执行的所以输出
//构造代码块Fu
//输出父类的构造方法 //构造方法Fu
//输出子类的构造代码块 //构造代码块Zi
//输出子类的构造方法 //构造方法Zi
Zi zi = new Zi();
}
}
class Fu {
//静态代码块只执行一次
static {
System.out.println("静态代码块Fu");
}
//构造代码块优先于构造方法执行
{
System.out.println("构造代码块Fu");
}
//构造方法
public Fu() {
System.out.println("构造方法Fu");
}
}
class Zi extends Fu {
static {
System.out.println("静态代码块Zi");
}
{
System.out.println("构造代码块Zi");
}
public Zi() {
//super(); //构造方法运行子类的构造方法之前要先走父类的构造方法
System.out.println("构造方法Zi");
}
}
|
|