간단한 게임 케릭터 공격 프로젝트로 총정리 해보자.

1. 부모클래스가 될 Hero 클래스를 만들어주자. 게임의 케릭터를 담당할 것이다.

  • 이름변수, 공격메소드 + 생성자를 생성해준다.

2. 각 직업인 Warrior, Archer, Wizard 클래스를 만들어준다.

  • 부모클래스에서 받은 필드(name)를 초기화할 생성자를 만들어준다.
  • 각 직업에 해당하는 기술메소드()를 만들고, 출력문에 해당 기술명을 적어주자.

public class Warrior extends Hero {

    public Warrior(String name) {
         super(name);
        
     }
    
     public void groundCutting() {
         System.out.println("대지 가르기!");
     }

}

3.  메인클래스-메인함수를 만들고 구현해보자.

  1. 먼저 각 직업 클래스들을 담을 Hero클래스의 변수 배열을 만들자(다형성 개념으로, 부모클래스에는 자식클래스 어느것이든 담긴다)
    Hero[] heros = new Hero[3];
  2. 배열의 각 원소에다가 해당클래스 객체를 생성해서 참조해주자.
    heros[0] = new Warrior("전사");
    heros[1] = new Archer("궁수");
    heros[2] = new Warrior("마법사");

  3. for문안에 각 원소들에서 attack()메소드를 사용하도록 해보자. 공통적인 부모클래스의 메소드이므로, for문에서 한번에 해결할 수 있다.
  4. 바로 밑에서는 if문 + < instanceof > 를 이용하여, 부모클래스인 Hero변수안에 있지만, 각 직업클래스의 객체인지 판별하여 –> 
    해당 객체가 맞다면, 그 클래스의 참조변수 temp안에다가 형변환을 해서 넣은 뒤-> 특수기술메소드()를 사용할 수 있게 호출해주자.
    *형변환을 하는 이유는 지금 객체가 <부모클래스인 Hero의 참조변수 의 배열 >속에 있기 때문이다.
    for(int i = 0; i< heros.length; i++) {
       
        heros[i].attack();
       
        if(heros[i] instanceof Warrior) {
            Warrior temp = (Warrior) heros[i];
            temp.groundCutting();
        }
       
    }
  5. 마찬가지로 다른 직업도 같은 작업을 해주고, 출력해보자.

자바 (2)

+ Recent posts