[JAVA]인터페이스
카테고리: JAVA
[20] 인터페이스
20.1. 인터페이스 (Interface)
- 모든 메서드는 추상 메서드(public abstract)
- 모든 변수는 상수(public static final)
- 자바 8 이후 버전에서는 디폴트 메서드(default method), 정적 메서드(static method) 등의 일부 코드가 기능으로 탑재
20.2. 인터페이스 구현 & 형(Type) 변환
- 인터페이스 클래스는 인터페이스 타입으로 선언한 변수로 형변환
Calc calc = new CompleteCalculator();
- 상속에서의 형변환과 동일한 의미
- 클래스 상속과는 다르게 구현 코드가 없어 여러 인터페이스 구현 가능
- 형변환(업캐스팅) 시 인터페이스에 선언된 메서드만 사용 가능
20.3. 인터페이스의 역할
- 클래스나 프로그램이 제공하는 기능을 명시적 선언
- 일종의 클라이언트 코드와의 약속이며 클래스나 프로그램이 제공하는 명세서(specification)
- 클라이언트 프로그램은 인터페이스에서 선언된 메서드 명세만 보고 이를 구현한 클래스들을 사용할 수 있음
- 인터페이스를 구현한 다양한 객체를 사용함 - 다형성
- JDBC (Java DataBase Connectivity) 인터페이스
20.4. 인터페이스를 활용한 DAO (Data Access Object) 구현(Implement)하기
- DB에 회원 정보를 넣는 dao를 여러 DB 제품이 지원될 수 있게 구현함.
- 환경(db.properties)에서 database의 종류에 대한 정보를 읽고 그 정보에 맞게 dao 인스턴스를 생성하여 실행될 수 있게 함.
20.5. 인터페이스와 다형성 구현하기
- 고객센터에는 전화 상담을 하는 상담원들이 있습니다. 일단 고객 센터로 전화가 오면 대기열에 저장됩니다. 상담원이 지정되기 전까지 대기 상태가 됩니다.
- 각 전화가 상담원에게 배분되는 정책은 여러 가지 방식으로 구현 될수 있습니다.
- 상담원 순서대로 배분하기
- 모든 상담원이 동일한 상담 건수 처리
- 대기가 짧은 상담원 먼저 배분하기
- 상담원에게 할당된 통화 수가 가장 적은 상담원에게 배분
- 우선순위가 높은 (숙련도가 높은) 상담원에게 배분하기
- 고객등급에 따라 등급이 높은 고객
- 상담원 순서대로 배분하기
- 다양한 정책이 사용되는 경우 Interface를 정의하고 구현하여 실행하시오.
20.6. 인터페이스의 요소
- 상수
- 모든 변수는 상수로 변환 됨 (public static final)
- 추상 메서드
- 모든 선언된 메서드는 추상 메서드 (public abstract)
- 디폴트 메서드 (java8 이후)
- 기본 구현을 가지는 메서드
- 인터페이스를 구현하는 클래스들에서 공통으로 사용할 수 있는 기본 메서드
- default 키워드 사용
ex) default void description() { }
- 정적(static) 메서드 (java8 이후)
- 인스턴스 생성과 상관없이 인터페이스 타입으로 사용할 수 있는 메서드
- private 메서드 (java9 이후)
- 인터페이스 구현하는 클래스에서 사용하거나 재정의할 수 없음
- 인터페이스 내부에서만 사용하기 위해 구현하는 메서드
- default 메서드나 static 메서드에서 사용함
20.7. 여러 인터페이스 구현(implements)하기
- 자바의 인터페이스는 구현 코드가 없으므로 하나의 클래스가 여러 인터페이스를 구현할 수 있음.
- 디폴트 메서드가 중복 되는 경우는 클래스에서 재정의 하여야 함.
- 여러 인터페이스를 구현한 클래스는 인터페이스 타입으로 형 변환되는 경우 해당 인터페이스에 선언된 메서드만 사용가능.
20.8. 인터페이스의 상속(extends)
- 인터페이스 사이에도 상속을 사용할 수 있음
- extends 키워드를 사용
- 인터페이스는 다중 상속이 가능하고 구현 코드의 상속이 아니므로 타입 상속이라고 함
댓글 남기기