전사가 무기를 여러개 다루기

인철·2023년 10월 13일
0

algorithm

목록 보기
38/91

심화문제

문제
class Main {
	public static void main(String[] args) {
		전사 a전사 = new 전사();
		
		a전사.a무기1 = new();
		a전사.공격();
		// 출력 => 전사가 칼로 공격합니다.
		
		a전사.a무기1 = new();
		a전사.공격();
		// 출력 => 전사가 활로 공격합니다.
		
		a전사.a무기2 = new();
		a전사.공격();
		// 출력 => 전사가 활로 공격합니다.
		// 출력 => 전사가 칼로 공격합니다.
	}
}

정답
class Main {
	public static void main(String[] args) {
		전사 a전사 = new 전사();

		a전사.a무기1 = new();
		a전사.공격();
		// 출력 => 전사가 칼로 공격합니다.

		a전사.a무기1 = new();
		a전사.공격();
		// 출력 => 전사가 활로 공격합니다.

		a전사.a무기2 = new();
		a전사.공격();
		// 출력 => 전사가 활로 공격합니다.
		// 출력 => 전사가 칼로 공격합니다.
	}
}

class 전사 {
	int 나이; // 전사의 나이
	무기 a무기1; // 전사가 가진 첫 번째 무기
	무기 a무기2; // 전사가 가진 두 번째 무기

	void 공격() {
		if (a무기1 != null) { // 첫 번째 무기가 존재할 경우
			System.out.print("전사가 ");
			a무기1.작동(); // 첫 번째 무기로 공격
		}

		if (a무기2 != null) { // 두 번째 무기가 존재할 경우
			System.out.print("전사가 ");
			a무기2.작동(); // 두 번째 무기로 공격
		}
	}
}

class 무기 {
	void 작동() {} // 무기의 작동 방식을 정의하지 않음
}

classextends 무기 {
	void 작동() {
		System.out.println("칼로 공격 합니다."); // 칼로 공격하는 메시지 출력
	}
}

classextends 무기 {
	void 작동() {
		System.out.println("활로 공격 합니다."); // 활로 공격하는 메시지 출력
	}
}
profile
같은글이있어도양해부탁드려요(킁킁)

0개의 댓글