더북(TheBook)

가장 기본이 되는 일반 유닛인 Unit 클래스를 공격 유닛인 AttackUnit 클래스가 상속받습니다. 그리고 AttackUnit 클래스를 상속받아 지상 공격 유닛인 보병과 탱크를 위한 Soldier, Tank 클래스를 정의합니다. 공중 유닛을 위해 비행 기능을 제공하는 Flyable 클래스를 정의합니다. 공중 공격 유닛인 FlyableAttackUnit 클래스는 Flyable 클래스와 AttackUnit 클래스를 다중 상속받습니다. 다시 FlyableAttackUnit 클래스를 상속받아 전투기 유닛을 위한 Stealth 클래스를 정의합니다.

최하위에 위치한 Soldier, Tank, Stealth 클래스는 각 유닛이 보유한 특수 기술을 메서드로 정의합니다. 공격, 이동, 피해 등 공통으로 처리되는 동작은 상속 관계에 따라 부모 클래스에 정의한 것을 그대로 사용합니다. 공중 공격 유닛은 지상이 아닌 공중으로 날아서 이동하므로 Unit 클래스의 move() 메서드를 오버라이딩해 Flyable 클래스의 fly() 메서드를 호출하도록 재정의합니다. 재정의한 덕분에 모든 유닛은 지상과 공중 구분 없이 모두 move() 메서드로 이동 동작을 처리할 수 있습니다.

게임 전체 코드와 코드를 실행한 결과는 다음과 같습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.