자바, 객체지향!

자바, 객체지향!

자바 프로그래밍의 꽃, 조립식 프로그래밍!

15 인터페이스

# 인터페이스(interface) ## 들어가며 --- 홍팍이는 개발자다. 동시에 강사이며, 친구이다. 상황에 따라 다양한 역할을 수행한다. ![클라우드스터딩-자바-인터페이스-다형성](https://i.imgur.com/n8DKfTJ.png) 프로그램에서 또한 마찬가지다. 한 객체가 다양한 역할을 수행할 수 있다. 이를 위한 개념. 인터페이스를 학습해보자. 1. 인터페이스란 2. 인터페이스 정의 및 구현 3. 인터페이스의 장점 ## 1. 인터페이스란 --- #### 무엇? 인터페이스란, 역할을 부여하는 것이다. #### 특징? 인터페이스는 추상 메소드로 구성된다. 추상 메소드란, 중괄호 내부가 없는 껍데기 메소드이다. #### 실생활 예 스마트폰은 알람, 전화기, 메신저의 역할을 한다. ![클라우드스터딩-자바-인터페이스-스마트폰-예](https://i.imgur.com/muKwkfV.png) ## 2. 인터페이스의 정의 및 구현 --- #### 코드 형식? 인터페이스의 형식은 아래와 같다. ``` interface NAME { // 프로토타입 메소드들.. } ``` #### 코드 예 Alarm 인터페이스 만들어보자. 그 기능으로는 비프음 내기와 음악 재생을 추가한다. 메소드에 중괄호가 없음을 주의하자. 이러한 메소드를 추상 메소드라 한다. ``` interface Alarm { public void beep(); // 추상메소드 public void playMusic(); // 추상메소드 } ``` #### 인터페이스 구현을 선언 위에서 만든 인터페이스를 클래스에 구현하자. 이를 위해 <kbd>implements</kbd> 키워드를 사용한다. ``` // SmartPhone 클래스가 Alarm 역할을 수행하기로 함! class SmartPhone implements Alarm { // 내부 구현 생략.. } ``` #### 추상 메소드 오버라이딩 이제 Alarm 인터페이스의 모든 추상 메소드를 재정의(오버라이딩) 해야 한다. 중괄호 내부가 없기 때문이다. ``` class SmartPhone implements Alarm { // 프로토타입 메소드를 재정의! public void beep() { System.out.println("삐~ 삐삑, 삐비비빅!"); } // 프로토타입 메소드를 재정의! public void playMusic() { System.out.println("아침 해가 빛나는~ 끝이 없는 바닷가!"); } } ``` ## 3. 인터페이스의 장점 --- #### 프로그램 설계의 명확성 인터페이스를 사용하면 프로그램 설계가 보다 명확해 진다. #### 관계성 부여 서로 다른 객체들이 같은 인터페이스를 구현한다면, 인터페이스를 타입으로 하여 업캐스팅 할 수 있다. ![클라우드스터딩-자바-인터페이스-업캐스팅](https://i.imgur.com/lM5MjzT.png) ### 다형성 여러 인터페이스를 구현하게 함으로써, 한 객체를 여러 타입으로 해석할 수 있게 된다. 이러한 특징을 다형성이라 한다. ![클라우드스터딩-자바-인터페이스-스마트폰-다형성](https://i.imgur.com/muKwkfV.png) ## 요약 --- ![클라우드스터딩-자바-인터페이스-요약](https://i.imgur.com/SwREgFf.png) #### 인터페이스란 - 인터페이스란, 역할을 부여하는 것이다. - 인터페이스는 추상 메소드로 구성된다. - 추상 메소드란, 중괄호 내부가 없는 껍데기 메소드이다. #### 인터페이스 정의 및 구현 - 인터페이스 구현 시, implements 키워드를 사용한다. - 해당 인터페이스(역할)를 구현하는(부여받은) 클래스를 구현체 클래스라 한다. - 구현체 클래스는 모든 추상 메소드를 오버라이딩(재정의)해야 한다. #### 인터페이스의 장점 - 프로그램 설계의 명확성 - 서로 다른 객체에게 관계성 부여(업캐스팅 가능) - 한 객체를 다양한 인터페이스로 해석 가능(다형성) ## 확인하기 --- <div class="interact_responsive_padding" style="padding:100% 0 0 0;position:relative;margin-bottom:5px;"><div class="interact_responsive_wrapper" style="height:100%;left:0;position:absolute;top:0;width:100%;"><iframe id="interactApp5d1af869a0598b0014546c39" width="100%" height="100%" style="border:none;max-width:100%;margin:0;" allowTransparency="true" frameborder="0" src="https://quiz.tryinteract.com/#/5d1af869a0598b0014546c39/q/1?method=iframe"></iframe></div></div> ## 도서구매 <a href="http://www.yes24.com/Product/Goods/104740689"><img src="http://image.yes24.com/goods/104740689/XL" width="50%" /></a>

Challenge

개념 실습! 학습 내용을 진짜 내 것으로 만들기!