我的目标是创建一个超类产品
使用此超类创建不同的对象,例如:
具有不同的价值(如价格)。
用于创建这些产品的不同对象的子类(例如 USB stick 8gb :我总共有5个(对象):1。new,2。used, 3. used,4。new,5。new)
使用我的版本(见上文),您总是需要为每个版本(1-5)提供相同的参数
Item usbstick1;
usbstick1 = new Item(50, "3.0 USB-Stick with 8 Gigybytes of storage", true)
我如何实现:
a)仅提供已创建的"产品的引用" (比如 USB Stick 8gb )每次创建一个新的子类对象?
b)如何将此参考用于不同的子类?
如果我有超级
public class Product {
double price
String description
public Item(double price, String description) {
setPrice(price);
setDescription(descrition);
}
setPrice(double newPrice) {
price=newPrice;
}
public void setDescription(String newDescription) {
description=newDescription;
}
此子类
public class Item extends Product {
boolean sealed;
public Item(double price, String description, boolean sealed) {
super(price, description);
setSealed(sealed);
}
public void setSealed(newSealed) {
sealed=newSealed;
}
这个子类
public class UsedItem extends Product {
int usedDays;
public UsedItem(double price, String description, int usedDays) {
super(price, description);
setUsedDays(usedDays);
}
public void setUsedDays(newUsedDays) {
usedDays=newUsedDays;
}
答案 0 :(得分:0)
您可能需要考虑将UsedItem
类更改为包含Product的实例,而不是扩展它,然后在构造函数中传递产品:
public class UsedItem {
Product product;
int usedDays;
public UsedItem(Product product) {
this.product = product;
}
public void setUsedDays(newUsedDays) {
usedDays=newUsedDays;
}
}
然后要创建新的UsedItem
,您可以将它传递给您制作的相同产品实例:
Item usbstick;
usbstick = new Item(50, "3.0 USB-Stick with 8 Gigybytes of storage", true);
UsedItem usb1 = new UsedItem(usbstick);
UsedItem usb2 = new UsedItem(usbstick);
UsedItem usb3 = new UsedItem(usbstick);
或者,您可以将已使用的项目设置为在构造函数中获取Item并从中设置值:
public class UsedItem extends Item{
public UsedItem(Product product) {
super(product.price, product.description);
}
}