我有 3 节课:
- 运动服(父类(super class))
- Jersey (子类)
- 司机
我的驱动程序中有一个 ArrayList 来保存我创建的所有 Jersey 。 当用户输入所有值(库存、价格、产品、团队、套件、尺寸、性别)时, 它显示它们回来它显示 null :
Product: null
In stock: 0
Price: 0
Team:
Kit:
Size:
Gender:
父类(super class)(运动装)具有变量库存、价格和产品
(因此我可以包含其他产品,而不仅仅是 Jersey )
子类(Jersey)包含变量team、kit、size、gender
。它还包含显示上面内容的方法jerseyDisplay()
。
在输入值后的驱动程序中,我输入:
Jersey jersey = new Sportswear(stock, price, product, team, kit, size, gender);
sportswear.add(jersey);
jersey.jerseyDisplay();
这是完全错误的吗?为什么输入的值没有显示?
子类Jersey
中的jerseyDisplay()
方法是:
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 父类(super class):
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 = "";
}
最佳答案
问题出在你的 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,价格、产品、团队、套件、尺寸、性别);
关于java - 我的对象值不会保存。显示空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23365049/