如何创建扩展类的实例?

时间:2013-01-08 16:29:59

标签: java object inheritance extends

我有一个名为Item的班级。它具有以下参数: User ownerCategory categoryString description

接下来,我有一个名为Painting的子类,它扩展了Item-class。 Painting有两个参数: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 个答案:

答案 0 :(得分:3)

你有一个新班级

public class Painting extends Item

你想要一个提供两个新参数的构造函数,String title,User painter

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");

答案 1 :(得分: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;
  }
}

答案 2 :(得分:0)

Painting构造函数应将CategoryUser作为参数,并将它们传递给调用“Item”构造函数的super

喜欢:

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

答案 3 :(得分:0)

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