我的对象值不会保存。显示null

时间:2014-04-29 12:44:23

标签: java object inheritance arraylist null

我有3个班级:

  1. 运动服(超级)
  2. 泽西岛(子类)
  3. 驱动程序
  4. 我的驱动程序中有一个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 = "";
        }
    

1 个答案:

答案 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);