[JAVA]인터페이스

Date:     Updated:

카테고리:

태그:

[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 키워드를 사용
  • 인터페이스는 다중 상속이 가능하고 구현 코드의 상속이 아니므로 타입 상속이라고 함

JAVA 카테고리 내 다른 글 보러가기

댓글 남기기