0

我有一个名为Item. 它具有以下参数 User ownerCategory categoryString description

接下来,我有一个名为的子类Painting,它扩展了 Item 类。APainting有两个参数:titlepainter

在代码中的某个时刻,我想创建一个Painting对象。应该可以从如下所示的测试文件运行代码:

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

sellerMgr中应该有能够注册(创建)该项目(作为绘画)的代码,因此我可以在数据库中使用它。我该如何准确地调用该代码?无论何时创建一个新的Item或一个新的Painting,以及在创建代码中添加哪些参数,我都会感到困惑。

4

4 回答 4

3

你有一个新班级

public class Painting extends Item

你需要一个提供两个新参数的构造函数,字符串标题,用户画家

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

每当您想要一个 Painter 的新实例时,您都可以调用此方法,该方法将为您设置任何 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

Painting构造函数应该接受CategoryUser作为参数,并且应该将它们传递给super调用“项目”的构造函数。

像:

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

于 2013-01-08T16:35:51.557 回答
0

在这种情况下,sellerMgr.offerPainting 应该创建并返回一个绘画类型的对象。可以将绘画强制转换为 Item,但在大多数情况下,您应该使用扩展类,它比 Item 具有更多功能。

于 2013-01-08T16:36:17.253 回答