Contents
오버 로딩으로 게임 만들기부모의 메소드를 자식이 재정의 하면!!
- 부모의 메소드를 호출하는 순간 부모의 메서드가 무효화(오버라이드) 되고 자식의 메소드가 호출된다. (동적 바인딩)
오버 로딩으로 게임 만들기
DarkTempler (hp=100, power=70)
Arkan (hp=100, power=70)
5가지 유닛이 서로 다 공격할 수 있게 attack() 구현하기
생성
→ 질럿2
→ 드라군2
→ 다크템플러2
→ 리버2
→ 아칸2
공격
→ 질럿이 드라군 공격 hp 확인
→ 질럿이 다크템플러 공격 hp 확인
→ 리버가 아칸 공격 hp 확인
→ 아칸 리버 공격 hp 확인
→ 드라군이 다크템플러 공격 hp 확인
→ 리버가 리버 공격 hp 확인
아래 예제를 사용해서 코드를 완성하시오.
package ex05.ch03;
class Protoss {
}
class River {
    int hp;
    int power;
    public River() {
        this.hp = 100;
        this.power = 50;
    }
    public void attack(River unit) {
        unit.hp = unit.hp - this.power;
    }
    public void attack(Zealot unit) {
        unit.hp = unit.hp - this.power;
    }
    public void attack(Dragoon unit) {
        unit.hp = unit.hp - this.power;
    }
}
class Dragoon {
    int hp;
    int power;
    public Dragoon() {
        this.hp = 100;
        this.power = 10;
    }
    // 기존 오브젝트 수정
    public void attack(River unit) {
        unit.hp = unit.hp - this.power;
    }
    public void attack(Zealot unit) {
        unit.hp = unit.hp - this.power;
    }
    public void attack(Dragoon unit) {
        unit.hp = unit.hp - this.power;
    }
}
class Zealot {
    int hp;
    int power;
    public Zealot() {
        this.hp = 100;
        this.power = 20;
    }
    // 기존 오브젝트 수정
    public void attack(River unit) {
        unit.hp = unit.hp - this.power;
    }
    public void attack(Dragoon unit) {
        unit.hp = unit.hp - this.power;
    }
    public void attack(Zealot unit) {
        unit.hp = unit.hp - this.power;
    }
}
public class StarGame {
    public static void main(String[] args) {
        Zealot z1 = new Zealot();
        Zealot z2 = new Zealot();
        Dragoon d1 = new Dragoon();
        z1.attack(d1);
        System.out.println("드라군 d1의 hp : " + d1.hp);
        z1.attack(z2);
        System.out.println("질럿 z2의 hp : " + z2.hp);
    }
}Share article