我有一个名为Item
的班级。它具有以下参数:
User owner
,Category category
和String description
。
接下来,我有一个名为Painting
的子类,它扩展了Item-class。 Painting
有两个参数:title
和painter
。
在代码中的某个时刻,我想创建一个Painting
对象。应该可以从如下所示的测试文件中运行代码:
User u1 = new User ("test@test.com");
Category cat = new Category("cat2");
Item painting = sellerMgr.offerPainting(u1, cat, "Selfportret", "Rembrandt");
类sellerMgr
中应该有代码可以注册(创建)该项(作为绘图),因此我可以在数据库中使用它。我该如何准确地调用该代码?无论何时创建新的Item
或新的Painting
,以及要在创建代码中添加哪些参数,我都会感到困惑。
答案 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
构造函数应将Category
和User
作为参数,并将它们传递给调用“Item”构造函数的super
。
喜欢:
public Painting(User user, Category category) {
super(user, category);
...
}
答案 3 :(得分:0)
在这种情况下,sellerMgr.offerPainting应该创建并返回一个类型为Painting的对象。绘画可以强制转换为Item,但在大多数情况下,您应该使用扩展类,它将具有比Item更多的功能。