這是一個叫做Player的類。 findItem()是用來從HashMap「items」中返回一個Item的方法。我如何使這種搜索方法適用於子類以及超級類?
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;
}
}
我可以一個武器添加到玩家的物品HashMap的,因爲武器僅僅是項目的延伸。我也可以使用findItem()在HashMap中查找武器,但它將其作爲Item返回,而不是武器。這使得我不能使用武器子類中的getDamage()方法。有沒有人看到我的問題的快速解決方案?我很確定它遺漏了一些關於繼承的信息。
我試着寫這個方法,但它說,它無法轉化項目支招:
public Weapon findWeapon(String search){
for (Weapon weapon : items.values()){
something somthing
}
}
謝謝!這爲我做了詭計。 Instanceof似乎是我忽略的東西。 – mRambech