public class Test2 extends Test1 {
{
System.out.print("1");
}
Test2() {
System.out.print("2");
}
static {
System.out.print("3");
}
{
System.out.print("4");
}
public static void main(String[] args) {
new Test2();
}
}
class Test1 {
{
System.out.print("7");
}
Test1() {
System.out.print("5");
}
static {
System.out.print("6");
}
}
程序执行结果:6375142
调用顺序:
1、先对类进行加载:初始化静态变量,先初始化父类的静态变量,然后才是子类的静态变量;
2、对类进行初始化:在子类初始化以前,先进行父类的初始化,以及父类构造器的调用;
3、最后初始化子类,调用子类构造方法;
在中文TIJ中,曾经说道父类的构造方法在子类的构造方法之前执行,这样说虽然不是错误的,但是是不
完善的,应该是父类的构造方法在子类初始化之前就已经执行了。
posted on 2007-02-23 13:23
鱼飞扬 阅读(101)
评论(0) 编辑 收藏 所属分类:
Java