java日记(3) 类的初始化问题(CSDN一个问题有感)

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

我在原问题上加了一个输出“7”;便于说明父类初始化的时间;

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中,曾经说道父类的构造方法在子类的构造方法之前执行,这样说虽然不是错误的,但是是不

完善的,应该是父类的构造方法在子类初始化之前就已经执行了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航