【问题标题】:Displaying values (from a subclass) of an object in an ArrayList (based off the superclass)在 ArrayList(基于超类)中显示对象的值(来自子类)
【发布时间】:2014-06-15 12:19:57
【问题描述】:

我有 3 个课程:

  1. 运动装(超类)
  2. 球衣(子类)
  3. 驱动程序

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

等等……

数组列表是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);
    }

超类(运动装)中的sportswearDisplay() 方法:

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

【问题讨论】:

  • 你能说说doesn't work的意思吗?你现在得到什么或错误?

标签: java class inheritance arraylist


【解决方案1】:

通常的做法是在你的类中覆盖toString。你试过了吗?

【讨论】:

  • 我不熟悉。我会查查的。谢谢
【解决方案2】:

继承的全部优点在于您可以为通用方法提供多种实现。超类和超类的任何调用者只需要知道方法签名,他们不需要知道子类中定义的方法的确切实现。

我要做的是在 SportsWear 类中创建一个 display 方法,然后让 Jersey 覆盖它。然后你可以告诉 SportsWear 去执行这个方法,Jersey 里面的方法就会被调用。

//Inside Sportswear class:

public String display() {
    //todo
}

//Inside Jersey class:

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

【讨论】:

  • 谢谢。但我现在收到一个错误:'void' type not allowed here 在 for 循环中:for(int i = 0; i &lt; sportswear.size(); i++) { System.out.println("Product "+(i+1)+": "); System.out.println(sportswear.get(i).display()); }
  • @user636363 你是如何实现display()的?它返回一个字符串吗?
猜你喜欢
  • 2012-12-13
  • 1970-01-01
  • 2014-09-08
  • 2016-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多