21. 객체지향의 활용( 게임 케릭터 공격 프로젝트 ) [Tutorial21]
2018. 2. 21. 22:06
간단한 게임 케릭터 공격 프로젝트로 총정리 해보자.
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. 메인클래스-메인함수를 만들고 구현해보자.
- 먼저 각 직업 클래스들을 담을 Hero클래스의 변수 배열을 만들자(다형성 개념으로, 부모클래스에는 자식클래스 어느것이든 담긴다)
Hero[] heros = new Hero[3]; - 배열의 각 원소에다가 해당클래스 객체를 생성해서 참조해주자.
heros[0] = new Warrior("전사");
heros[1] = new Archer("궁수");
heros[2] = new Warrior("마법사"); - for문안에 각 원소들에서 attack()메소드를 사용하도록 해보자. 공통적인 부모클래스의 메소드이므로, for문에서 한번에 해결할 수 있다.
- 바로 밑에서는 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();
}
} - 마찬가지로 다른 직업도 같은 작업을 해주고, 출력해보자.
'Java > 기초 튜토리얼' 카테고리의 다른 글
20. 객체 클래스(Obejct Class)–[Tutorial20] (0) | 2018.02.21 |
---|---|
19. 다형성(Polymorphism) [Tutorial 19] (0) | 2018.02.21 |
18. 인터페이스(interface) [ Tutorial18 ] (0) | 2018.02.21 |
17. final 키워드 [ Tutorial17 ] (0) | 2018.02.21 |
16. 추상(Abstract) [Tutorial16] (0) | 2018.02.21 |