# 인터페이스 정의 및 구현 #### 무엇? 인터페이스란, 하나의 역할을 정의하는 것입니다. ![클라우드스터딩-자바-인터페이스-정의-구현](https://i.imgur.com/4pRwrhu.png) #### 인터페이스 만들기 예를 들어, 경보음을 위한 Alarm이라는 역할은 아래와 같이 만들 수 있습니다. ``` interface Alarm { // 내용 생략.. } ``` #### 추상 메소드? Alarm 인터페이스는 경보음을 내기위해 어떠한 기능을 해야할까요? 그 대략적인 틀을 프로토타입(추상) 메소드를 통해 정의합니다. 여기서 프로토타입 메소드란, 중괄호 내용이 없는 껍데기 메소드입니다. ``` interface Alarm { // 비프음을 냈으면 좋겠어? 어떻게? 그건 나중에 정할께! public void beep(); // 음악을 재생했으면 좋겠어! 어떻게? 그건 나중에 정할께! public void playMusic(); } ``` #### 구현체 클래스? 인터페이스를 통해 역할을 정의했다면, 이를 클래스에게 부여할 수 있습니다. 이러한 클래스를 구현체라고 합니다. ``` // SmartPhone 클래스는 Alarm 인터페이스를 구현하기로 한다! class SmartPhone implements Alarm { 내용 생략.. } ``` 클래스가 특정 인터페이스를 구현(implements)하기로 했다면, 인터페이스를 구성하는 프로토타입(추상) 메소드를 반드시 오버라이딩(재정의)해야 합니다. ``` class SmartPhone implements Alarm { // beep음은 이렇게 낼거야! public void beep() { System.out.println("삐빅~ 삐비비비빅!"); } // 음악 재생은 이렇게 할거야! public void playMusic() { System.out.println("동해물과 백두산이~🎶"); } } ``` ## 문제 주어진 코드의 SmartPhone 클래스는 Phone 인터페이스를 구현하기로 선언되어있다. ![클라우드스터딩-자바-인터페이스-정의와-구현체-클래스](https://i.imgur.com/dsad3LC.png) Phone 인터페이스를 오버라이딩(재정의)하여, 출력 예와 같은 결과를 얻으시오. ## 출력 예 ``` 010-1234-5678로 전화를 겁니다! 전화벨이 울립니다~ ```
관련 강의로 이동

코드: java 1.8

public class SmartPhoneTest { public static void main(String[] args) { // 객체 생성 // SmartPhone sp = new SmartPhone("아이폰", "010-0000-0000"); // 전화 걸기 // sp.call("010-1234-5678"); // 전화벨이 울림 // sp.ring(); } } interface Phone { // targetNumber로 전화를 걸거야! 어떻게? 그건 아직 몰라! public void call(String targetNumber); // 전화벨이 울릴거야! 어떻게? 그건 아직 몰라! public void ring(); } class SmartPhone implements Phone { protected String name; protected String phoneNumber; public SmartPhone(String name, String phoneNumber) { this.name = name; this.phoneNumber = phoneNumber; } /* Phone 인터페이스의 모든 프로토타입 메소드를 구현하시오. */ }

입력

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