# 업 캐스팅
#### 부모 타입으로 해석하기
업 캐스팅이란, 자식 객체를 부모의 타입으로 해석하는 것입니다. 예를 들어 아래와 같은 상속 관계가 있을 때,
```
class Animal { ... }
class Cat extends Animal { ... }
class Dog extends Animal { ... }
class Horse extends Animal { ... }
```
Cat의 인스턴스(객체)는, Animal로 해석 될 수 있습니다.
```
// 고양이 객체 생성
Cat c = new Cat();
// 고양이는 동물이다(O)
Animal a = c; // 고양이 객체를 동물로 해석
```
하지만 위 내용의 역은 성립하지 않음을 주의하세요.
```
// 동물 객체 생성
Animal aaa = new Animal();
// 동물은 고양이다(X)
Cat ccc = aaa; // ERROR!
```
#### 그룹화
이러한 업 캐스팅은, 다양한 객체들을 부모의 타입으로 관리할 수 있게 합니다.
```
Animal c = new Cat(); // 고양이는 동물이다
Animal d = new Dog(); // 개는 동물이다
Animal h = new Horse(); // 말은 동물이다
// 동물 배열 - 고양이, 개, 말
Animal[] animals = { c, d, h };
```
## 문제
주어진 코드는 Knight 및 Thief 클래스를 정의하고 있다. 두 클래스의 공통 요소를 추출하여 부모 클래스 Adventurer를 작성하고, 출력 예와 같은 결과를 얻으시오.
![클라우드스터딩-자바-부모-클래스-추출](https://i.imgur.com/wAtaKLp.png)
## 출력 예
```
[아서스] HP: 180
[발리라] HP: 120
```