Java

本类阅读TOP10

·使用MyEclipse开发Struts框架的Hello World!(录像1)
·hibernate配置笔记
·AOP编程入门--Java篇
·linux下Tomcat 5.0.20 与 Apache 2 安装/集成/配置
·在win2003下整合了整合Tomcat5.5+ apache_2.0.53+ mod_jk_2.0.47.dll
·构建Linux下IDE环境--Eclipse篇
·Jsp 连接 mySQL、Oracle 数据库备忘(Windows平台)
·ASP、JSP、PHP 三种技术比较
·Tomcat5.5.9的安装配置
·AWT GUI 设计笔记(二)

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
java日记(3) 类的初始化问题(CSDN一个问题有感)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

我在原问题上加了一个输出“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中,曾经说道父类的构造方法在子类的构造方法之前执行,这样说虽然不是错误的,但是是不

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




相关文章

相关软件