0

親クラスよりも多くのパラメーターを持つクラスのコンストラクターを実装しようとしています。唯一の共通点はタイトルです。Book クラスにコンストラクターを実装しようとすると、「Implicit super constructor Item() is undefined」というエラーが表示されます。

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

1つ以上のパラメーターを持つコンストラクターを追加する場合、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 に答える