これはPlayerと呼ばれるクラスの一部です。 findItem()は、アイテムをHashMapの "items"から返すために使用されるメソッドです。スーパークラスだけでなく、サブクラスでもこの検索方法を使用できますか?
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);
}
この方法は現在まで問題なく機能しています。 今、WeaponというItemのサブクラスがあります。
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の項目のHashMapに武器を追加することができます。 findItem()を使ってHashMap内の武器を見つけることもできますが、武器ではなくアイテムとして返します。これは私が武器のサブクラスからgetDamage()メソッドを使用できないようにします。誰も私の問題の迅速な解決策を見ていますか?私はかなり確かにその何かが相続財産について不足しています。
私はこの方法を書いてみましたが、それはそれは武器にアイテムを変換することはできませんと言う:
public Weapon findWeapon(String search){
for (Weapon weapon : items.values()){
something somthing
}
}
ありがとうございました!これは私のためのトリックでした。 Instanceofは私が見落としたことのようです。 – mRambech