# 인터페이스와 업캐스팅
#### 부모의 타입으로 해석?
업캐스팅(up-casting)이란, 자식 객체를 부모의 타입으로 해석하는 것을 말합니다.
![클라우드스터딩-자바-업캐스팅-상속](https://i.imgur.com/hDDbsRX.png)
이와 마찬가지로, 인터페이스를 구현하는 객체는 인터페이스 타입으로 업캐스팅 될 수 있습니다.
![클라우드스터딩-자바-업캐스팅-인터페이스](https://i.imgur.com/3t4nrs5.png)
#### 그룹화
전혀 다른 객체들일지라도 같은 인터페이스를 구현하였다면, 업캐스팅을 통하여 그룹화가 가능합니다.
```
// 다양한 객체 생성
Bird bird = new Bird();
Helicopter copter = new Helicopter();
Rocket rocket = new Rocket();
// 인터페이스 타입으로 그룹화
Flyable[] flyableThings = { bird, copter, rocket };
```
## 문제
주어진 코드에는 Flyable 인터페이스를 구현하고 있는 서로 다른 3개의 클래스들이 존재한다.
![클라우드스터딩-자바-업캐스팅-인터페이스-그룹화](https://i.imgur.com/v9GFJbv.png)
출력 예와 같은 결과를 얻도록, Flyable 인터페이스를 각 클래스에 구현하여 코드를 완성하시오.
## 출력 예
```
<새>가 날개를 퍼덕이며 날아갑니다!
<헬기>가 프로펠러를 힘차게 돌리며 날아갑니다!
<로켓>이 제트 엔진을 분출하며 날아갑니다!
```