일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 백엔드
- 예외 처리
- 상속
- 다형성
- FileInputStream
- Java
- MPA
- throws
- 메서드
- 파이팅
- SSR
- 코린이
- 문자 단위 스트림
- 변수
- 자바
- node.js
- 졸리다
- 보조 스트림
- 인스턴스
- 배열
- 바이트 단위 스트림
- exception
- try-catch
- ArrayList
- 인터페이스
- 새벽공부
- 자료형
- 개발자
- 초보개발자
- 코딩
- Today
- Total
SHUSTORY
10-2 인터페이스와 다형성 본문
인터페이스의 역할
메서드 선언부만 있는 인터페이스를 사용하는 이유는 무엇일까?
인터페이스는 클라이언트 프로그램에 어떤 메서드를 제공하는지 미리 알려주는 명세의 역할을 한다.
* 참고로 서버는 기능을 제공하는 쪽, 클라이언트는 기능을 사용하는 쪽을 의미한다.
예를 들어 인퍼에이스 A가 있고, 이를 구현한 B 클래스와 B 클래스를 사용하는 C 프로그램이 있다고 가정해보자.
A에는 어떤 매개변수가 사용되며 어떤 자료형이 반환되는지와 함께 구현할 추상 메서드가 모두 선언되어 있다.
즉 C에서는 B의 구현 코드 전체를 살펴보지 않더라도 A만 보면 이 B 클래스를 어떻게 사용할지 알 수 있다.
이렇듯 프로그램에서 각 클래스를 사용할 때 클래스에서 구현한 내용을 몰라도
인터페이스에서 선언한 메서드의 매개변수 자료형과 반환 값만 알면 인터페이스를 구현한 어떤 클래스든 사용 가능하다.
클라이언트 프로그램은 인터페이스에서 약속한 명세대로 구현한 클래스를 생성해서 사용하면 되는 것이다.
인터페이스와 다형성
인터페이스를 사용하면 클라이언트 프로그램을 많이 수정하지 않고,
기능을 추가하거나 다른 기능을 사용하는 등 다형성을 구현하여 확장성 있는 프로그램을 만들 수 있다.
상담원 예제
고객 센터에 전화상담원들이 있고, 각 전화를 상담원에게 다음 세 가지 방법으로 배분하는 방식을 구현해보자.
- 순서대로 배분하기
- 짧은 대기열 찾아 배분하기
- 우선순위에 따라 배분하기
인터페이스 정의하기
위 세가지 배분 방식에서 공통으로 사용하는 메서드를 선언하는 Schedule 인터페이스를 구현해보자.
- getNextCall( ) _ 다음 전화를 가져오는 기능
- sendCallToAgent( ) _ 상담원에게 전화를 배분하는 기능
인터페이스 구현하기
상담원에게 전화를 배분하는 세 가지 시나리오에 대해 인터페이스를 구현하여 클래스를 작성해보자.
프로그램 실행하기
사용자가 콘솔 화면에서 문자 하나를 입력하면 그 입력 문자에 따라 배분 정책을 정하고 실행하는 프로그램을 구현해보자.
* 어떤 클래스를 구현하건 클라이언트가 인터페이스를 구현한 클래스를 사용하는 방식은 25,26행 코드와 같다.
클라이언트 프로그램은 각 클래스의 구현 방법을 몰라도 인터페이스에서 선언된 매개변수,
반환 값을 보고 클래스를 사용할 수 있다.
이렇듯 인터페이스는 구현된 클래스를 사용하는 클라이언트 코드와 기능을 제공하는 코드 사이의 약속이다.
'프로그래밍 > JAVA' 카테고리의 다른 글
11-1 Object 클래스 (0) | 2023.03.06 |
---|---|
10-3 인터페이스 요소 살펴보기 (0) | 2023.03.05 |
10-1 인터페이스 (0) | 2023.03.05 |
09-4 final 예약어 (0) | 2023.03.04 |
09-3 템플릿 메서드 응용하기 (0) | 2023.03.04 |