본문 바로가기
Language/Java

공부내용 정리 Java :: 예제 3

by Cs.Woo 2021. 6. 24.

문제 : 하기의 코드가 실행될 수 있도록 처리하십시오

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

    String 이름 = "칸";
    a전사.이름 = 이름;
    a전사.나이 = 20;
    a전사.자기소개();
    
    a전사.나이++;
    a전사.자기소개();
    
    a전사.나이 = 30;
    a전사.이름 = "카니";
    a전사.자기소개();
    
    a전사.a무기 = new 활();
    a전사.공격();
    // 출력 : 카니가 활로 공격합니다.
    
    a전사.a무기 = new 칼();
    a전사.공격();
    // 출력 : 카니가 칼로 공격합니다.
  }
}

class 전사 {
  // 인스턴스 변수
  String 이름;
  // 인스턴스 변수
  int 나이;
  // 인스턴스 변수
  무기 a무기;
  
  void 자기소개() {
    System.out.println("안녕하세요. 저는 " + this.나이 + "살 " + this.이름 + " 입니다.");
  }
}

class 무기 {
  
}

class 칼 extends 무기 {
  
}

class 활 extends 무기 {
  
}

 

풀이 :

class Main {
	public static void main(String[] args) {
		Warrior aWarrior =  new Warrior();
		
		String name = "칸";
		aWarrior.name = name;
		aWarrior.age = 20;
		aWarrior.introduce();
		
		aWarrior.age++;
		aWarrior.introduce();
		
		aWarrior.age = 30;
		aWarrior.name = "카니";
		aWarrior.introduce();
		
		aWarrior.aWeapon = new Bow();
		aWarrior.attack();
		
		aWarrior.aWeapon = new Sword();
		aWarrior.attack();
		
	}
}

class Warrior {

	public String name;
	public int age;
	Weapon aWeapon;
	
	void introduce() {
	
		System.out.println("안녕하세요. 저는" + this.age + "살" + this.name + " 입니다.");
	
	}
	
	void attack() {
	aWeapon.character = this.name;
	aWeapon.attack();
	}

}

class Weapon {
	String character;
	
	void attack() {
	}
	
}

class Sword extends Weapon {

	void attack() {
		String weaponName = "칼";
		System.out.println(weaponName + " 로 " + character + " 가 공격합니다.");		
	}

}

class Bow extends Weapon {

	void attack() {
		String weaponName = "활";
		System.out.println(weaponName + " 로 " + character + " 가 공격합니다.");		
	}

}