# 인터페이스 구현 인터페이스는 특정 역할에 대한 대략적인 틀만 정의합니다. 아래는 Healer 인터페이스의 예입니다. ``` // 힐러 역할 interface Healer { public void healing(); // 체력 회복 public void shield(); // 보호막 생성 } ``` 이제 해당 인터페이스를, 특정 클래스에 부여해보도록 하겠습니다. 이때 사용하는 키워드가 바로 `implements` 입니다. ``` // 마법사 클래스에게 Healer 인터페이스를 부여 class Wizard implements Healer { ... } ``` 특정 인터페이스를 부여받은 클래스는, 반드시 프로토타입 메소드를 오버라이딩(재정의) 해주어야만 합니다. 인터페이스는 껍데기 메소드로 이루어져있어, 실행될 수 없기 때문입니다. 따라서 아래와 같이 중괄호 내부를 정의해야 합니다. ``` class Wizard implements Healer { // 메소드 오버라이딩(재정의) public void healing() { System.out.println("체력을 회복시킵니다!"); } // 메소드 오버라이딩(재정의) public void shield() { System.out.println("보호막을 생성합니다!"); } } ``` ## 문제 주어진 코드의 Alarm 인터페이스를 SmartPhone 클래스에 구현하고, 출력 예와 같은 결과가 나오도록 코드를 완성하시오. ## 출력 예 ``` 삐빕! 삐비비빕~! [상어송]을 재생합니다..! ```
관련 강의로 이동

코드: java 1.8

public class SmartPhoneTest { public static void main(String[] args) { // 객체 생성 SmartPhone iPhone = new SmartPhone("아이폰 X"); // 객체를 알람 인터페이스(역할)로 해석 Alarm alarm = (Alarm) iPhone; // 알람 기기의 비프음 내기 alarm.beep(); // 알람 기기의 음악 재생하기 alarm.playMusic("상어송"); } } interface Alarm { public void beep(); // 비프음 public void playMusic(String title); // 음악 재생 } /* 1. Alarm 인터페이스를 해당 클래스에 구현하세요. */ class SmartPhone { private String name; // 모델명 public SmartPhone(String name) { this.name = name; } /* 2. beep() 메소드를 오버라이딩(재정의) 하세요. */ /* 3. playMusic() 메소드를 오버라이딩하세요. */ }

입력

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