OnlineBookクラスを継承したOnlineMagazineクラスを作成して、出版月と出版日を保持するフィールド(int型)を追加する。これらに登録を行うメソッドvoid setMonth(int month),void setDate(int date)、および出版年/出版月/出版日をまとめて出力するメソッドString getPublicationDate()を作成する。といったことをやったのですがエラーが出てどうすればよいのかわかりません。どなたか教えてもらえないでしょうか?

public class javaprog {
public static void main(String[] args) {
/* Bookクラスからインスタンスを生成 */
Book book = new Book("The Java Tutorial", 55, 1999);
System.out.println("Title = " + book.getTitle());
System.out.println("Price = " + book.getPrice());

/* Bookクラスからインスタンスを生成 */
OnlineBook obook = new OnlineBook("The Java Virtual Machine Specification", 0, "http://java.sun.com/docs/books/vmspec/index.html");
System.out.println("Title = " + obook.getTitle());
System.out.println("Price = " + obook.getPrice());
System.out.println("Website = " + obook.getWebsite());

System.out.println(getPublicationDate());
}
}

class Book { // クラスBookの宣言
String title; // 題名
private int price; // 価格(ドル)
int year; // 出版年(西暦)

Book(String t, int p, int y) { // コンストラクタ
title = t; // 題名の設定
price = p; // 価格の設定
year = y; // 出版年の設定
}

public String getTitle() { // 題名の取得
return title;
}

public int getPrice() { // 価格の取得
return price;
}

public int getYear() { // 出版年の取得
return year;
}
}

class OnlineBook extends Book { // クラスBookを継承
public String website; // URL

OnlineBook(String t, int p, int y, String website) {
super(t, p, y); // スーパークラスのコンストラクタの呼び出し
this.website = website; // URLの設定
}

public String getWebsite() { // URLの取得
return website;
}

public String getTitle() {
return "Online: " + title;
}
}
// 追加したところ↓
class OnlineMagazine extends OnlineBook { // クラスOnlineBookを継承
int month; // 出版月
int date; // 出版日

OnlineMagazine(String t, int p, int y, String website) {
super(t, p, y, website);
setMonth(5);
setDate(27);
}

void setMonth(int month) { // 出版月を設定するメソッド
this.month = month;
}

void setDate(int date) { // 出版日を設定するメソッド
this.date = date;
}

String getPublicationDate() { // 出版年/出版月/出版日をまとめて出力するメソッド
return "出版年/出版月/出版日" + year/ + month/ + date;
}
}

エラー↓
% javac javaprog.java
javaprog.java:9: シンボルを解決できません。
シンボル: コンストラクタ OnlineBook (java.lang.String,int,java.lang.String)
場所 : OnlineBook の クラス
OnlineBook obook = new OnlineBook("The Java Virtual Machine Specification", 0, "http://java.sun.com/docs/books/vmspec/index.html");
^
javaprog.java:14: シンボルを解決できません。
シンボル: メソッド getPublicationDate ()
場所 : javaprog の クラス
System.out.println(getPublicationDate());
^
エラー 2 個
%

このQ&Aに関連する最新のQ&A

A 回答 (1件)


OnlineMagazineクラスを作成したみたいですが、OnlineMagazineクラスを使っている個所がみあたりません。


> javaprog.java:9: シンボルを解決できません。
> シンボル: コンストラクタ OnlineBook (java.lang.String,int,java.lang.String)
> 場所 : OnlineBook の クラス
> OnlineBook obook = new OnlineBook("The Java Virtual Machine Specification", 0, "http://java.sun.com/docs/books/vmspec/index.html");
コンストラクタのパラメタの並びと、実際に呼び出そうとしているパラメタの並びが一致していませんよ。
よく確認しましょう。


> avaprog.java:14: シンボルを解決できません。
> シンボル: メソッド getPublicationDate ()
> 場所 : javaprog の クラス
> System.out.println(getPublicationDate());
getPublicationDate() メソッドはOnlineMagazineクラスに実装したメソッドの様に見えますが、
インスタンスを正しくしていしていません。
OnlineMagazineクラスのインスタンスを指定しましょう。

その前に、OnlineMagazineクラスのインスタンスを作成(new)しないといけませんよね。
    • good
    • 0
この回答へのお礼

的確なアドバイスありがとうございました。

お礼日時:2009/05/29 16:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング