【发布时间】:2016-11-05 00:49:41
【问题描述】:
这是一个叫做 Player 的类的一部分。 findItem() 是用于从 HashMap“项目”返回项目的方法。
public class Player extends Character {
private String type;
private int carryWeight;
private HashMap<String, Item> items;
public Item findItem(String search) {
return this.items.get(search);
}
到目前为止,此方法一直运行良好。 现在,我有一个 Item 的子类,称为 Weapon。
public class Weapon extends Item{
private int damage;
public Weapon(String name, String description, String action, int value, int weight, int damage){
super(name, description, action, value, weight);
this.damage = damage;
}
public int getDamage(){
return damage;
}
}
我可以在 Player 中的 items HashMap 中添加一个 Weapon,因为 Weapon 只是 Item 的一个扩展。我还可以使用 findItem() 在 HashMap 中查找武器,但它会将其作为项目而不是武器返回。这使得我无法使用武器子类中的 getDamage() 方法。有没有人看到我的问题的快速解决方案?我很确定它在继承方面缺少一些东西。
我试过写这个方法,但它说它不能将物品转换为武器:
public Weapon findWeapon(String search){
for (Weapon weapon : items.values()){
something somthing
}
}
【问题讨论】:
标签: java inheritance methods