# 인터페이스와 그룹화 업캐스팅(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 인터페이스를 각 클래스에 구현하여 코드를 완성하시오. ## 출력 예 ``` <새>가 날개를 퍼덕이며 날아갑니다! <헬기>가 프로펠러를 힘차게 돌리며 날아갑니다! <로켓>이 제트 엔진을 분출하며 날아갑니다! ```
관련 강의로 이동

코드: java 1.8

public class ObjectGrouping { public static void main(String[] args) { // 다양한 객체 생성 Bird bird = new Bird(); Helicopter copter = new Helicopter(); Rocket rocket = new Rocket(); // 인터페이스 타입으로 그룹화 Flyable[] flyableThings = { bird, copter, rocket }; // 모든 날것들을 날림 for (int i = 0; i < flyableThings.length; i++) { Flyable temp = flyableThings[i]; temp.fly(); } } } interface Flyable { public void fly(); } /* 1. Bird 클래스에 Flyable 인터페이스를 구현하세요. */ class Bird implements Flyable { /* 1.1 fly() 메소드를 오버라이딩 하세요. */ } /* 2. Helicopter 클래스에 Flyable 인터페이스를 구현하세요. */ class Helicopter implements Flyable { /* 2.1 fly() 메소드를 오버라이딩 하세요. */ } /* 3. Rocket 클래스에 Flyable 인터페이스를 구현하세요. */ class Rocket implements Flyable { /* 3.1 fly() 메소드를 오버라이딩 하세요. */ }

입력

정답이 궁금하다면? 코드를 제출해보세요!