服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

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

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

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

扫描关注微信公众号