0

我正在尝试实现一个比父类具有更多参数的类的构造函数,唯一的共同点是标题。当我尝试在 Book 类中实现构造函数时,它显示一个错误“隐式超级构造函数 Item() 未定义”。

public class Book extends Item {

private String author = "";
private String ISBN = "";
private String publisher = "";

public Book(String theTitle, String theAuthor, String theIsbn, String thePublisher){

}

}

父类构造函数;

public abstract class Item {

private String title;
private int playingTime;
protected boolean gotIt;
private String comment;

public Item(String title, int playingTime, boolean gotIt, String comment) {
    super();
    this.title = title;
    this.playingTime = playingTime;
    this.gotIt = gotIt;
    this.comment = comment;
}

提前致谢。

4

3 回答 3

5

您的超类没有无参数默认构造函数,因此您必须使用传递默认值的 super() 关键字显式调用超类的重载构造函数。

public Book(String theTitle, String theAuthor, String theIsbn, String thePublisher){
super(thTitle,0,false,null)
}
于 2013-03-09T11:13:15.360 回答
0

因为您没有定义无参数构造函数,或者在 super(....) 中提供参数

于 2013-03-09T11:19:17.130 回答
0

如果您要添加带有一个或多个参数的构造函数,java 不会添加无参数构造函数。如果我们不在类中添加任何构造函数,Java 会添加无参数构造函数。解决您的问题的其他方法是您需要重载构造函数,例如

public Item(String title, int playingTime, boolean gotIt, String comment) {
    super(); //remove this constructor or define no-arg constructor in super class.
    super(thTitle,0,false,null); //add this constructor
}

YouNeedToReadHeadFirstCoreJava

于 2013-03-09T11:20:08.263 回答