.class文件不显示对父构造函数

时间:2015-08-12 05:07:13

标签: java constructor

我试图理解java中的构造函数。我读过如果我在java文件中没有提供构造函数,编译器会为我插入一个(默认的no-args one)。我写了一个简单的java文件ConstructorTest.java,如下所示。

public class ConstructorTest{
}

然后我编译它并使用Cavaj,我可以看到类文件内容,如下所示。

public class ConstructorTest
{
    public ConstructorTest()
    {
    }
}

我的问题是我在下面的语句中看不到相同的情况,“如果你键入自己的构造函数并且不输入对super()this()的调用,编译器将插入对super()的无参数调用,作为构造函数中的第一个语句(摘自ORACLE OCA/OCP Java 7学习指南)“。

我的java文件:

public class ConstructorChild extends ConstructorTest{

public ConstructorChild(){

}

}

我的班级档案:

public class ConstructorChild extends ConstructorTest
{

    public ConstructorChild()
    {
    }
}

为什么编译时编译器没有插入对super()的调用?感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

Erwin Bolwidt是对的。顺便说一句,java字节代码中的构造函数始终命名为<init>,而静态块自称为<clinit>。另请注意,后者可以出现多次,并且JVM将按加载类的外观顺序调用所有这些。