문제
class Main {
public static void main(String[] args) {
전사 a전사 = new 전사();
a전사.공격();
// 출력 => 아직 무기가 없습니다.
a전사.a무기 = new 칼();
a전사.공격();
// 출력 => 칼로 공격합니다.
}
}
정답
class Main {
public static void main(String[] args) {
// 전사 객체 생성
전사 a전사 = new 전사();
// 무기가 없는 상태에서의 공격
a전사.공격(); // 출력 => 아직 무기가 없습니다.
// 칼을 무기로 설정하고 공격
a전사.a무기 = new 칼();
a전사.공격(); // 출력 => 칼로 공격합니다.
}
}
// 전사 클래스
class 전사 {
int 나이; // 전사의 나이
무기 a무기; // 전사가 사용하는 무기
// 무기가 없는 상태에서의 공격 메서드
void 공격() {
if (a무기 == null) { // 무기가 없을 때
System.out.println("아직 무기가 없습니다.");
} else { // 무기가 있는 경우
a무기.작동(); // 해당 무기의 작동 메서드 호출
}
}
}
// 무기 클래스
class 무기 {
// 무기의 작동 메서드
void 작동() {
}
}
// 칼 클래스 (무기 클래스를 상속받음)
class 칼 extends 무기 {
// 칼로 공격하는 작동 메서드 재정의
void 작동() {
System.out.println("칼로 공격합니다.");
}
}