Java] Interface
- 서비스 목록으로 교량 역할
- 서로 다른 구조에서 처리를 위해 표준화
Abstract와 Interface
완벽한 Abstract 클래스는 Interface와 같다.
1 | public abstract class PersonalNumberStorage { |
1 | public interface PersonalNumberStorage { |
- 인터페이스 내에 존재하는 변수는 무조건
public static final
로 선언된다. - 인터페이스 내에 존재하는 메서드는 무조건
public abstract
로 선언된다.
Interface 변수
인터페이스 변수가 public static final
로 선언되다보니 이전에는 상수를 모아두는 방법으로도 사용되었다. Java5부터 열거형(enum)이 제공되면서 그 역할을 대신하기였다. 열거형은 자바에 익숙해지고 나서 접근하는 것이 좋다.
Interface의 상속
Inteface의 상속은 Implements
를 이용하여 상속받으며 상속이라기보다는 구현이라고 표현한다.
Interface끼리의 상속에서는 Implements를 사용하는 것이 아닌 extends
를 이용한다.
인터페이스의 쓰임
인터페이스는 서비스를 구현할 때 명세서 역할을 한다고 보면 된다.
예로 JDBC의 구현을 들어보자.
JDBC(Java Database Connectivity)는 데이터베이스와 자바를 연결해주는 라이브러리다.
JDBC에 연결된 Database(Oracle, MySQL 등…) 이러한 연결과 기능들을 Java에서 다 해주기엔 만만치 않았을 것이다. 본래 기능을 가지고 있는 각 회사에서 기능을 구현해서 라이브러리화해서 쓸 수 있게 하는게 맞는 것이다.
그런데 이 기능을 구현함에 있어서 제 각각 다를 수 있으니 Interface를 통해 규격화해서 구현하게 하는 것이 옳다.
이러한 일을 할 때 인터페이스를 사용한다.