我有3个班级:
我的驱动程序中有一个ArrayList来保存我创建的所有球衣。 当用户输入所有值(库存,价格,产品,团队,工具包,尺寸,性别)时, 然后它显示它们显示为null:
Product: null
In stock: 0
Price: 0
Team:
Kit:
Size:
Gender:
超类(运动装)有变量stock, price and product
(所以我可以包括其他产品,而不仅仅是球衣)
子类(Jersey)包含变量team, kit, size, gender
。它还包含显示上述内容的方法jerseyDisplay()
。
在输入值后的驱动程序中,我输入:
Jersey jersey = new Sportswear(stock, price, product, team, kit, size, gender);
sportswear.add(jersey);
jersey.jerseyDisplay();
这完全错了吗?为什么输入的值不显示?
子类jerseyDisplay()
中的Jersey
方法是:
public void jerseyDisplay()
{
super.sportswearDisplay();
System.out.println("Team: "+team);
System.out.println("Kit: "+kit);
System.out.println("Size: "+size);
System.out.println("Gender: "+gender);
}
@DessertIvy这是Sportswear的超级课程:
public class Sportswear
{
//instance variables
private int stock;
private float price;
private String product;
//blank constructor
public Sportswear()
{
this.stock = 0;
this.price = 0;
this.product = "";
}
//detailed constructor
public Sportswear(int s, float p, String pd)
{
this.stock = stock;
this.price = price;
this.product = product;
}
//setters
public void setStock(int stock)
{
this.stock = stock;
}
public void setPrice(float price)
{
this.price = price;
}
public void setProduct(String product)
{
this.product = product;
}
//getters
public int getStock()
{
return stock;
}
public float getPrice()
{
return price;
}
public String getProduct()
{
return product;
}
//increase stock
public int increaseStock()
{
stock = stock++;
return stock;
}
//decrease stock
public int decreaseStock()
{
stock = stock - 1;
return stock;
}
public void sportswearDisplay()
{
System.out.println("Product: "+product);
System.out.println("In stock: "+stock);
System.out.println("Price: "+stock);
}
}
Jersey子类中的构造函数:
public Jersey(int stock, float price, String product, String team, String kit, String size, String gender)
{
super(stock, price, product);
this.team = "";
this.kit = "";
this.size = "";
this.gender = "";
}
答案 0 :(得分:1)
问题在你的2个构造者中:
//detailed constructor
public Sportswear(int s, float p, String pd)
{
this.stock = stock;
this.price = price;
this.product = product;
}
和
public Jersey(int stock, float price, String product, String team, String kit, String size, String gender)
{
super(stock, price, product);
this.team = "";
this.kit = "";
this.size = "";
this.gender = "";
}
您应该使用作为参数传递的值初始化变量...或使用您的setXXX
方法。在构造函数中,它应如下所示:
//detailed constructor
public Sportswear(int s, float p, String pd)
{
this.stock = s;
this.price = p;
this.product = pd;
}
另外,如前所述,这一行
Jersey jersey = new Sportswear(stock, price, product, team, kit, size, gender);
甚至不应该编译......你可能意味着Jersey jersey = new Jersey(stock, price, product, team, kit, size, gender);