Java - 상속

상속에 대해서

Posted by Yan on March 14, 2021

상속 예제

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라는 부모 클래스의 배열을 자식 클래스로 형변환해서 메소드를 사용할 수 있다는 것을 배웠다.