0

という名前のクラスがありItemます。次のパラメータがあります: User ownerCategory categoryおよびString description

その隣にPainting、Item クラスを拡張するという名前のサブクラスがあります。APaintingには と の 2 つのパラメーターがtitleありpainterます。

Paintingコードのある時点で、オブジェクトを作成したいと思います。次のようなテスト ファイルからコードを実行できるはずです。

User u1 = new User ("test@test.com");
Category cat = new Category("cat2");
Item painting = sellerMgr.offerPainting(u1, cat, "Selfportret", "Rembrandt");

そのアイテムを(絵画として)登録(作成)できるクラスにコードがsellerMgrあるはずなので、たとえばデータベースで使用できます。そのコードを正確に呼び出すにはどうすればよいですか? Itemnewまたはnew を作成するかどうかPainting、作成コードにどのパラメーターを追加するか、いつでも混乱します。

4

4 に答える 4

3

新しいクラスがあります

public class Painting extends Item

String title、User painter という 2 つの新しいパラメータを提供するコンストラクタが必要になります。

public Painting(User owner, Category category, String description, String title, User painter){
    super(owner, category, description);
    this.title = title;
    this.painter = painter
}

Painter の新しいインスタンスが必要なときはいつでも、必要な 2 つの新しいパラメーターを導入しながら、任意の Item 変数をセットアップするこのメソッドを呼び出すことができます。呼び出しは次のいずれかのようになります

Item paintingAsItem = new Painting(u1, cat, "desc", "Selfportret", "Rembrandt"); //Generic
Painting painting = new Paining(u1, cat, "desc", "Selfportret", "Rembrandt");
于 2013-01-08T16:39:22.497 に答える
1

おそらく、次のようなものが必要です。

Painting p = new Painting(u1, cat, title, painter);

クラス定義が次のようになっていると仮定します。

public class Painting extends Item {

  private String title;
  private String painter;

  public Painting(User owner, Category category, String title, String painter){
    super(owner, category);
    this.title = title;
    this.painter = painter;
  }
}
于 2013-01-08T16:35:47.533 に答える
0

PaintingCategoryコンストラクターは引数としてandを取り、 'Item' のコンストラクターを呼び出すUserものにそれらを渡す必要があります。super

お気に入り:

public Painting(User user, Category category) { super(user, category); ...
}

于 2013-01-08T16:35:51.557 に答える
0

この場合、sellerMgr.offerPainting は、Painting タイプのオブジェクトを作成して返す必要があります。ペイントはアイテムにキャストできますが、ほとんどの場合、アイテムよりも多くの機能を持つ拡張クラスを使用する必要があります。

于 2013-01-08T16:36:17.253 に答える