상속 예제
Hero클래스를 상속하는 Warrior, Archer, Wizard 클래스를 만들고 Main클래스에서 메소드 호출하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| package objectTutorial;
public class Hero {
String name;
public Hero(String name) {
this.name = name;
}
public void attack() {
System.out.println("주먹 발사!");
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
| package objectTutorial;
public class Warrior extends Hero {
public Warrior(String name) {
super(name);
}
public void groundCutting() {
System.out.println("대지 가르기!");
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
| package objectTutorial;
public class Archer extends Hero{
public Archer(String name) {
super(name);
}
public void fireArrow() {
System.out.println("불화살!");
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
| package objectTutorial;
public class Wizard extends Hero {
public Wizard(String name) {
super(name);
}
public void freezing() {
System.out.println("얼리기!");
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| package objectTutorial;
public class Main {
public static void main(String[] args) {
Hero[] heros = new Hero[3];
heros[0] = new Warrior("전사");
heros[1] = new Archer("궁수");
heros[2] = new Wizard("마법사");
for (int i = 0; i < heros.length; i++) {
heros[i].attack();
if(heros[i] instanceof Warrior) {
Warrior temp = (Warrior) heros[i];
temp.groundCutting();
} else if (heros[i] instanceof Archer) {
Archer temp = (Archer) heros[i];
temp.fireArrow();
} else if (heros[i] instanceof Wizard) {
Wizard temp = (Wizard) heros[i];
temp.freezing();
}
}
}
}
|
Hero[] heros = new Hero[3]
이 부분이 나에겐 좀 새로웠는데, 객체 하나 하나를 배열에 넣고, 반복문으로 배열의 각 인덱스를 사용하는 점. 그리고 instanceof
로 배열 안의 각 객체를 대조하여 불러내고, heros라는 부모 클래스의 배열을 자식 클래스로 형변환해서 메소드를 사용할 수 있다는 것을 배웠다.