通过引用超类访问子类方法
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
如您所见,Item
s 只能做 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();
}
我有一个名为 "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
如您所见,Item
s 只能做 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();
}