3.8 Java中子类和父类的构造函数

这篇文章总结了关于Java构造函数常见问题。

1.为什么创建子类对象需要调用父类构造函数?

class Super {
    String s;
 
    public Super(){
        System.out.println("Super");
    }
}
 
public class Sub extends Super {
 
    public Sub(){
        System.out.println("Sub");
    }
 
    public static void main(String[] args){
        Sub s = new Sub();
    }
}

打印:

Super
Sub

当从另外一个类继承时候,super()必须首先在构造函数中调用。 如果没有,编译器将插入该调用。 这就是为什么在创建子对象时也调用超级构造函数的原因。

这不会创建两个对象,只有一个子对象。 有超级构造函数调用的原因是,如果超类可以有私有字段,需要通过其构造函数初始化。
编译器插入超级构造函数后,子类构造函数如下所示:

  public Sub(){
        super();
        System.out.println("Sub");
    }

2.常见错误消息:隐式超级构造函数未定义为默认构造函数

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容