Итак PickUpHealth1 extends Item
и у вас есть List<Item> items
Как вы заметили, Item
s может делать только Item
вещи, поэтому вы не можете пытаться использовать PickUpHealth1
методы, когда вы получаете доступ к нему как Item
через список элементов.
Если Item
не имеет ничего общего, то не расширяйте его.
Если они все "пригодны для использования", тогда дайте им общий метод.
Например:
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();
}