1

割り当てを実行しようとしていますが、Stringパラメーターを持つオブジェクトのインスタンス化に問題があります。これまでのアプリケーションをコンパイルして実行すると、期待したものではなく、「Null」の文字列値が返されます。

これは私の抽象的なスーパークラスです

public abstract class Book
{
//Declaration of class variable
private String title;
protected double price;

// contructor for Book class objects
public Book(String bookTitle)
    {
        bookTitle = title;
    }
//method that gets and returns books title
public String getTitle()
    {
        return title;
    }
//method that gets and returns books price
public double getPrice()
    {
        return price;
    }
//abstract method with no parameters
public abstract void setPrice();
}

これは私のサブクラスです

public class Fiction extends Book
{
//subclass contructor
public Fiction(String bookTitle)
{
    //calling superclass constructor
    super(bookTitle);
}
//override annotation and setPrice method override
@Override
public void setPrice()
{
    price = 19.99;
}
}

これは、オブジェクトfictionBookがタイトルTheWhiteUnicornでインスタンス化されることになっている私のメインメソッドクラスです。しかし、何らかの理由で私のprintlnは代わりにnullを出力しています

public class BookTester
{
//Main method
public static void main(String[] args)
{
    //Instantiate object
    Fiction fictionBook = new Fiction("The White Unicorn");
    NonFiction nonFictionBook = new NonFiction("Autobiography of Curtis Sizemore");
    //call to the setPrice() method
    fictionBook.setPrice();
    nonFictionBook.setPrice();
    //Print information on books
    System.out.println("The Fiction book titled \"" + fictionBook.getTitle() + "\"costs $" + fictionBook.getPrice());
}
}

何が問題なのかわかりません。誰か助けてもらえますか?ノンフィクションの本のサブクラスもありますが、まだその点に到達していません。

4

2 に答える 2

7
public Book(String bookTitle)
    {
        bookTitle = title;
    }

パラメーターをプロパティ値に設定しています。おそらく、意図したものとは逆になっていますか?

于 2012-05-29T00:09:03.710 に答える
1

あなたのクラスはこのようにする必要があります -

public abstract class Book
{
//Declaration of class variable
private String title;
protected double price;

// contructor for Book class objects
public Book(String bookTitle)
    {
        this.title = bookTitle;
    }
//method that gets and returns books title
public String getTitle()
    {
        return this.title;
    }
//method that gets and returns books price
public double getPrice()
    {
        return this.price;
    }
//abstract method with no parameters
public abstract void setPrice();
}
于 2012-05-29T07:30:48.843 に答える