이것은 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이라는 하위 클래스가 있습니다. 무기 아이템의 단지 연장이기 때문에 나는 플레이어의 항목되는 HashMap에 무기를 추가 할 수 있습니다
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;
}
}. findItem()을 사용하여 HashMap에서 무기를 찾을 수도 있지만, 무기가 아니라 Item으로 반환합니다. 이것은 내가 무기 하위 클래스에서 getDamage() 메서드를 사용할 수 없도록 만듭니다. 누구든지 내 문제에 대한 빠른 해결책을 볼 수 있습니까? 임씨는 상속에 대해 뭔가 빠져 있음을 확신합니다.
나는이 방법을 작성했지만, 그것이 무기로 항목을 변환 할 수 없습니다 말한다 :public Weapon findWeapon(String search){
for (Weapon weapon : items.values()){
something somthing
}
}
감사합니다. 이것은 나를 위해 속임수를했다. Instanceof는 제가 간과 한 것 같습니다. – mRambech