java - 子类可以引用其父类(super class)的类型吗?

标签 java subclass superclass

我正在学校制作游戏。我有武器,它是元素的子类。 我的类中有一个名为 BattleGround 的字段 currentWeapon。我有一种方法来搜索和迭代我的“背包”中的所有项目。我希望也将其用于武器,因为它们也是元素。

我希望的是 Weapon 类的对象也可以称为项目。但我就是不知道。我是否需要一种新方法来迭代Weapon武器元素都应存放在同一个背包中。

如果我将字段currentWeapon存储为Weapon,我将无法使用该方法,并且可能不会将Weapon存储在StringItem 的 >Hashmap。如果我将其存储为 Item,我将无法使用 Weapon 类的方法。谢谢。

最佳答案

如果WeaponItem的子类,那么您可以将Weapon存储在Item的集合中没有任何问题的对象。也许您需要学习的是 instanceof 运算符:

List<Item> items = new ArrayList<>();

// add some items to the list

for (Item item : items) {
  if (item instanceof Weapon) {
    Weapon weapon = (Weapon) item; // cast the item to a weapon
    weapon.someWeaponMethod();
  }
}

如果您使用instanceof,您可以确定您的Item实际上是否是Weapon

关于java - 子类可以引用其父类(super class)的类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15805621/

相关文章:

java - 无法在 apache tomcat 上运行 servlet。它说,请求的资源不可用

java - 在 wicket 有没有办法直接读取本地化属性?

Java,是否可以将 'convert'对象从子类传递到父类(super class)对象

java - 如果子类中的实例方法具有相同的签名和不同的返回类型,它是覆盖方法还是新方法?

ios - 可以将 UIButton 图像设置为零索引吗?

Java - 调用父类(super class)并使用标准方法

java - Hibernate 中的 Multi-Tenancy - 多数据库 (SQLite)

java - 组合字符串未附加到值

c++ - 无法使派生的WebDuino类正常工作-使用 'Web_HelloWorld.ino'编译错误

Python的isinstance方法结果对于子类实例是意外的