显示ArrayList中对象的值(来自子类)(基于超类)

时间:2014-04-29 13:55:14

标签: java class inheritance arraylist

我有3个班级:

  1. 运动服(超级)
  2. 泽西岛(子类)
  3. 驱动程序
  4. 我的驱动程序中有一个ArrayList来保存我创建的所有球衣。我将值输入并存储到球衣对象(stock, price, product, team, kit, size, gender)

    股票,价格,产品在超类(运动装)和 团队,工具包,大小,性别在子类(泽西岛)中处理。

    我希望显示所有球衣及其所有细节,例如:

    Product 1:
    **********
    Product: Jersey
    In stock: 50
    Price: €35.0
    Team: Manchester United
    Kit: Home
    Size: M
    Gender: Male
    
    Product 2:
    **********
    Product: Jersey
    In stock: 70
    Price: €25.99
    Team: liverpool
    Kit: Away
    Size: L
    Gender: Female
    

    依旧......

    arrayList是sportswear

    我不知道在for loop写些什么。这不起作用:

    for(int i = 0; i < sportswear.size(); i++)
            {
                System.out.println("Product "+(i+1)+": "+sportswear.get(i).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);
        }
    

    超类(Sportswear)中的sportswearDisplay()方法:

    public void sportswearDisplay()
        {
            System.out.println("Product: "+product);
            System.out.println("In stock: "+stock);
            System.out.println("Price: \u20AC"+price);
        }
    

2 个答案:

答案 0 :(得分:1)

通常的做法是覆盖课程中的toString。你试过吗?

答案 1 :(得分:0)

继承的整体美妙之处在于,您可以为一般方法提供多种实现。超类以及超类的任何调用者只需知道方法签名,他们不需要知道方法的确切实现,如子类中所定义。

我要做的是在SportsWear类中创建一个display方法,让Jersey覆盖它。然后你可以告诉SportsWear执行该方法,并且将调用Jersey内部的方法。

//Inside Sportswear class:

public String display() {
    //todo
}

//Inside Jersey class:

@Override
public String display() {
    super.display();
    //todo
}