如何解决带参数或不带参数的子类的构造函数?
我必须使用一个名为 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 举报,一经查实,本站将立刻删除。