# 인터페이스와 다형성 하나의 클래스가 여러 개의 인터페이스를 구현할 수 있습니다. ![클라우드스터딩-자바-인터페이스-예](https://i.imgur.com/XB9GsHC.png) 예를 들어, 스마트폰(SmartPhone) 클래스에 알람(Alarm) 및 전화(Phone) 그리고 메신저(Messanger)의 역할을 동시에 부여하는 경우, `implements` 키워드 뒤쪽에 인터페이스들을 쉼표로 구분하여 적어주면 됩니다. 인터페이스를 구현하기로 선언하였다면, *반드시 프로토타입 메소드들을 오버라이딩*해야 함을 잊지 마세요. ``` class SmartPhone implements Alarm, Phone, Messanger { // 내부 생략.. } ``` 이제 SmartPhone은 알람 및 전화기, 또는 메신저 타입으로 해석([업캐스팅](https://cloudstudying.kr/challenges/420))될 수 있습니다. ``` // 스마트폰 객체 생성 SmartPhone sp = new SmartPhone(); // 스마트폰을 다양하게 해석(업캐스팅 - 상위 타입으로 해석) Alarm a = sp; // 스마트폰은 알람 역할이 가능(O) Phone p = sp; // 스마트폰은 전화기 역할이 가능(O) Messanger m = sp; // 스마트폰은 메신저 역할이 가능(O) ``` 이렇게 하나의 객체가 다양한 타입으로 해석되는 것을 **다형성**(Polymorphism)이라 합니다. ## 문제 주어진 코드의 두 인터페이스 Tanker와 Healer를 HolyKnight 클래스에 부여하고, 출력 예와 같은 결과를 얻도록 코드를 완성하시오. ## 출력 예 ``` 전체 체력 +50 증가시킵니다. 체력을 +30 회복합니다. ```
관련 강의로 이동

코드: java 1.8

public class Polymorphism { public static void main(String[] args) { // 성기사 객체 생성 HolyKnight uther = new HolyKnight("우서", 180); // 탱커로서의 역할 수행 Tanker t = uther; t.increaseHp(); // 힐러로서의 역할 수행 Healer h = uther; h.heal(); } } interface Tanker { public void increaseHp(); } interface Healer { public void heal(); } /* 1. 탱커와 힐러 역할을 부여하세요. */ class HolyKnight { private String name; private int hp; public HolyKnight(String name, int hp) { this.name = name; this.hp = hp; } /* 2. Tanker의 메소드를 오버라이딩하세요. */ /* 3. Healer의 메소드를 오버라이딩하세요. */ }

입력

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