当前位置:  开发笔记 > 编程语言 > 正文

为什么在java中的子类的参数化构造函数中调用Super类的参数化构造函数是必须的?

如何解决《为什么在java中的子类的参数化构造函数中调用Super类的参数化构造函数是必须的?》经验,为你挑选了1个好方法。

以下代码无法编译:

class Super
{ 
    int i = 0;    
    Super(String text)
    {
        i = 1; 
    } 
} 

class Sub extends Super
{
    Sub(String text)
    {
       ------------LINE 14------------
        i = 2; 
    }     
    public static void main(String args[])
    {
        Sub sub = new Sub("Hello"); 
        System.out.println(sub.i); 
    } 
}

但是当我super(text)在第14行添加时,它工作正常.为什么会这样?



1> Eran..:

没有显式调用超类构造函数的构造函数将被添加一个对无参数构造函数的隐式调用(就好像该super();语句被添加了它的第一个语句).

在您的情况下,由于超类具有带参数的构造函数,因此它没有无参数构造函数,因此super();无法传递编译,您必须super(text)显式调用.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有