私は継承の問題に取り組んでいます。私は本のスーパークラスを持っています。それから私は本を拡張するクラスの電話を持っています。次に、出力を生成するために配列を使用するドライブPolyMainがあります。継承とコンストラクタコードで支援が必要
* Phoneクラスのコンストラクタは、ブック内の総ページ数を取得するためにwhitePages + yellowPagesを集計し、これをスーパーコールの単一パラメータとしてブックスーパークラスに渡す必要があります。書籍の総ページ数と書籍のタイトルは、Bookクラスのコンストラクタで設定されています。
PolyMainクラスを修正して、少なくとも1つの電話帳を作成し、ライブラリに格納します。 PolyMainクラス内で定義されている印刷方法を変更することなく、ライブラリを印刷できるようになりました。*
アウトプットにはタイトル、ページ数(合計)、イエローページ数およびホワイトページ数。以下のプログラムは私にその出力を与えます。
しかし、PolyMainには整数が追加されています。例:library [2] = new Novel( "Animal Farm"、250,9); 「250と9」が追加され、それがページや章に印刷されます。
PolyMainクラスに数値を追加する必要がある場合、私のコンストラクタがyellowPagesとwhitePagesを合計していることを確認するにはどうすればよいですか? library [3] =新しい電話( "Black Hills Directory"、600、350、250); "600,350,250"またはいくつかの整数を追加しないとエラーが発生し、コンパイルされません。ここで
スーパークラスのコードです:
public class Book
{
private String title;
private int pages;
public Book(String title, int pages)
{
this.title = new String(title);
setPages(pages);
}
public void setPages(int pages)
{
this.pages = pages;
}
public int getPages()
{
return pages;
}
public void print()
{
System.out.print(title + " has " + pages + " pages");
}
}
ここでは私の子クラスです。
public class Phone extends Book
{
private int yellowPages = 250;
private int whitePages = 350;
public Phone (String title, int pages, int whitePages, int yellowPages)
{
super(title, pages);
this.whitePages = whitePages;
this.yellowPages = yellowPages;
pages = whitePages + yellowPages;
}
public void print()
{
super.print();
System.out.println(", " + yellowPages + " yellowPages, " + "and " +
whitePages + " whitePages.");
}
}
は、ここに私のドライバクラスです。
public class PolyMain
{
public static void main(String [] args)
{
Book [] library = new Book [5];
library[0] = new Novel("Jaws", 300, 15);
library[1] = new Almanac("New World ", 100, 50);
library[2] = new Novel("Animal Farm ", 250, 9);
library[3] = new Phone("Black Hills Directory ", 600, 350, 250);
listBooks(library);
}
static void listBooks(Book [] library)
{
for (int i = 0; i < library.length && library[i] != null; i++)
library[i].print();
}
}
としてタイトルとホワイトページ+のYellowpagesのようタイトルを使用して、スーパークラスのコンストラクタを呼び出すタイトル、ホワイトページ、およびイエローページ
コンストラクタで 'super(title、whitePages + yellowPages)'を呼び出すことができるので、 '600' /' pages'パラメータは必要ありません。 –
@Ken Y-N。ポインタありがとうございますが、私はそれを得ていません。私がオブジェクトから "600/350/250 /"を引っ張ると、私のPhoneメソッドが "string、int、int、int"で設定されているというエラーが出ます。私はキャッチ22にあるようだ。もし私が電話を変更すると、それはPolyMainを台無しにし、Phoneを修正することなくPolyMainを修正することはできない。どのように編集してもエラーが出ます。説明できますか?お願いしてありがとう! – HerdingDogRescuer