코드 상태 분석

Weapon 패키지 내의 상속 문제
flute, gun, wand가 weapon 클래스의 상속을 받지 않은 상태
-> 무기로서의 기능을 전혀 사용할 수 없음
오버라이딩 필요
-> attackable의 attack()을 weapon 클래스 또는 자식 클래스에서 오버라이딩 해야함
수정할 부분 ( before / after )
Weapon.java
public abstract class Weapon implements Attackable {
public String name;
public int power;
public Weapon(String name, int power) {
this.name = name;
this.power = power;
}
}
public abstract class Weapon implements Attackable {
public String name;
public int power;
public Weapon(String name, int power) {
this.name = name;
this.power = power;
}
@Override
public void attack(Player attacker, Player target) {
System.out.println(attacker.name + " (이)가 " + this.name + "(으)로 공격합니다");
int newHp = target.getHp() - this.power;
target.setHp(newHp);
System.out.println(target.name + " 데미지 " + this.power + " 감소 !");
}
}
flute.java / gun.java / wand.java
public class flute extends Weapon{
public flute() {
super("flute", 20);
}
}
public class gun extends Weapon{
public gun() {
super("gun", 40);
}
}
public class wand extends Weapon{
public wand() {
super("wand", 50);
}
}

추가적으로...
Main을 더 건드려 보고 싶었는데 못했음
Player 선택이 하드코딩 되어있어 scanner을 통해 직접 입력받아 선택하도록 해보려고 했는데 너무 많은 수정이 필요할 것 같아 중단함..
Main과 Player에서 Weapon 관련 메소드도 더 바꿀 수 있는지 찾아보면 좋을 것 같다