캐릭터 이름과 직업, 무기 기능 구현
class Main {
public static void main(String[] args) {
전사 a전사 = new 홍길동();
a전사.a무기 = new 활();
a전사.공격();
// 출력 => 홍길동이(가) 활(으)로 공격합니다.
a전사 = new 홍길순();
a전사.공격();
// 출력 => 홍길순이(가) 칼(으)로 공격합니다.
a전사.a무기 = new 창();
a전사.공격();
// 출력 => 홍길순이(가) 창(으)로 공격합니다.
}
}
abstract class 전사 {
String 이름, 무기명;
무기 a무기;
void 공격(){
a무기.작동(this.이름);
}
전사 (){
이름 = "No Name";
무기명 = "빈손";
}
}
class 홍길동 extends 전사{
홍길동(){
이름 = "홍길동";
}
}
class 홍길순 extends 전사{
홍길순(){
이름 = "홍길순";
a무기 = new 칼(); // 기본 무기 탑재
}
}
abstract class 무기{
String 무기명, 사용자명;
void 작동(String 사용자명){
System.out.println(사용자명+"이(가) "+무기명+"(으)로 공격합니다.");
}
}
class 활 extends 무기{
활(){
무기명 = "활";
}
}
class 창 extends 무기{
창(){
무기명 = "창";
}
}
class 칼 extends 무기{
칼(){
무기명 = "칼";
}
}