问题描述
我必须使用一个名为 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() { }
- 在子类中使用默认参数调用构造函数(不太喜欢的选项)