[TIL] 인터페이스
인터페이스 Interface 란?
인터페이스는 미완성된 설계도와 같은 개념 추상 메서드만 있는 껍데기 |
- 클래스를 위한 템플릿으로서의 기능을 수행하는 추상 클래스의 한 종류이다.
- 인터페이스는 interface 라는 키워드를 사용하여 선언하며, 메소드 시그너처와 상수 선언만을 포함할 수 있다.(static, final 모두 선언되는 변수 선언) => java 8 미만에서만
- 자바 8 미만의 인터페이스는 모든 메소드가 선언만 있고 정의가 없는 추상메소드만 선언 가능
- 자바 8 부터는 default와 static 메소드는 interface 정의에 구현체를 가질 수 있다.
- 클래스에서 인터페이스를 구현하기 위해서는 implements 키워드 사용한다.
- 인터페이스는 다중 상속이 가능하다. 콤마 ","로 구분하여 여러개의 인터페이스를 상속할 수 있다.
- 인터페이스 끼리 상속할 경우 extends 키워드 사용한다.
특징
- 클래스간 결합도를 낮출 수 있다.
- 표준화가 가능하다
- 개발시간 단축 가능하다.
인터페이스 멤버
상수필드
- 인터페이스는 상수 필드만 선언 가능하며 런타임 시 값을 변경할 수 없다.
- 상수 필드는 public final static만 가능하며 생략할 수 있지만 생략해도 자동으로 컴파일된다.
- static{} 초기화 블록으로 초기화가 불가능하며 상수 필드를 선언하며 초기화해야한다.
추상메소드
- 자바8미안의 인터페이스는 모든 메소드가 선언만 있고 정의가 없는 추상 메소드만 선언이 가능하다.
- 접근제어자는 생략이 가능하지만 public만 가능하다.
- 추상 메소드에 public abstract 키워드를 붙이지 않아도 자동으로 생성된다.
- 인터페이스를 구현한 클래스는 추상 클래스가 아닌 경우 인터페이스의 모든 추상 메소드를 재정의해야 한다.
디폴트 메소드
- 자바 8부터 사용 가능
- 디폴트 메소드는 인터페이스에 선언되지만, 정의가 된 메소드로 구현클래스에서 재정의가 가능하다.
- 디폴트 메소드는 public 를 생략해도 public 특성을 갖는다.
- 디폴트 메소드를 사용하기 위해서는 반드시 인터페이스를 구현한 클래스의 객체를 생성한 후 에만 사용 가능
- 인터페이스를 상속 받은 인터페이스는 디폴트 메소드를 재정의하거나 다시 추상 메소드로 선언 할 수 있다.
static 메소드
- 자바8부터 가능
- 디폴트 메소드와 달리 객체가 없어도 인터페이스만으로 호출이 가능하다.
- static 메소드는 public을 생략해도 public의 특성을 갖는다.
'Language > JAVA' 카테고리의 다른 글
[TIL] 예외처리 (3) | 2020.08.12 |
---|---|
[TIL] 중첩 클래스 (0) | 2020.08.11 |
[TIL] 추상 클래스 (0) | 2020.08.10 |
[TIL] 상속 (0) | 2020.08.10 |
[TIL] 자바의 기본 API 클래스 - Date 클래스 (0) | 2020.08.10 |
댓글