通过引用超类访问子类方法

Accessing subclass methods by referencing superclass

我有一个名为 "Items" 的超级 class 和一个名为 "PickUpHealth1" 的子 class。我创建了一个类似于此代码的项目数组:

ArrayList<Items> itemsArray = new ArrayList<Items>();
Items h1 = new PickUpHealth1(x,y);
itemsArray.add(h1);

subclass 有它自己的方法。我遍历数组 itemsArray,当某个事件发生时,我想启动 subclass PickUpHealth1 中的方法。我知道 superclass 不知道 subclass 中的方法,但我不想尽可能为每个 subclass 创建一个单独的数组。无论如何我可以通过 itemsArray 引用 subclass 中的方法吗?由于 h1 被初始化为 PickUpHealth1 的对象,我认为应该有办法做到这一点,但我想不通。有办法吗?还是我做错了?谢谢。

所以 PickUpHealth1 extends Item 你有一个 List<Item> items

如您所见,Items 只能做 Item 事情,因此当您以 Item 通过项目列表。

如果 Item 没有任何共同点,则不要从中扩展。

如果都是"useable"那就给个通用的方法吧

例如:

abstract class Item {
    public abstract void useItem();
}

class PickUpHealth extends Item  {
    private int healAmount;
    public PickUpHealth(int healAmount) {
        this.healAmount = healAmount;
    }

    @Override
    public void useItem() {
        player.addHealth(healAmount);
    }
}

public static void main(String[] args) {
    List<Item> items = Arrays.asList(new PickUpHealth(10));
    Item item = items.get(0);
    item.useItem();
}