微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带参数或不带参数的子类的构造函数?

如何解决带参数或不带参数的子类的构造函数?

我必须使用一个名为 Document 的超类和两个子类(DVD 和书)来完成这个程序。基本上这两个子类继承了 Document 的属性+每个子类的一两个特定属性

这是我的超类:

public class Document {

    public String nom;
    public int copiesdispo;
    public String noref;

    public static int nbDocs;

    /*
    ** Constructor(s)
    */

    public Document(String nom,String noref) {

        this.nom = nom;
        this.noref = noref;
        this.copiesdispo = copiesdispo;

        nbDocs++;

    }

}

这是我目前对子类书籍的了解:

public class Livre extends Document {
    
     public Livre() {
        
        super();
        
    }
    
}

虽然这不能编译,似乎我不能这样做,但我之前在以前的程序中已经这样做过并且没有问题..?这里有什么问题/为什么?这是否意味着我必须将超类抽象化?

解决方法

super() 实际上会调用超类的实际构造函数

在这里,您隐藏了默认构造函数(不带参数),因为您在带参数的超类中添加了一个

你可以看看JLS

你基本上有两个选择

  • 向超类添加默认构造函数 public Document() { }
  • 在子类中使用默认参数调用构造函数(不太喜欢的选项)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。