java - 我的对象值不会保存。显示空

标签 java object inheritance arraylist null

我有 3 节课:

  1. 运动服(父类(super class))
  2. Jersey (子类)
  3. 司机

我的驱动程序中有一个 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/

相关文章:

java - SonarQube - 无法连接到 > localhost/0 :0:0:0:0:0:0:1:9000

java - 如何使用 instanceof 解决 JPA 延迟加载问题

javascript - 在 ES6 中从一个类访问另一个类的对象

ios - 使用 Storyboard 而不是 Nib

Javascript 检查数组中的重复对象并将值合并到数组中

c# - 在任何子方法之前(或之后)调用父方法

带有任意 C 代码的 Java native 接口(interface)

Java 类与 C++ 类

尝试使用父类方法时Java调用子类方法

Swift - 如何添加扩展具有新属性的现有类?