: 어떤 오브젝트에 대한 설명서
요소
- 추상 메서드
- 상수
- 디폴트 메서드 : 기본 구현을 가지는 메서드. 구현하는 클래스에서 재정의 가능 (java 8)
- 정적 메서드 : 인스턴스 생성과 상관없이 인터페이스 타입으로 호출하는 메서드
- private 메서드 : 인터페이스 내에서 사용하기 위해 구현한 메서드. 구현하는 클래스에서 재정의&사용 불가능. (java 9)
인터페이스에서 선언한 변수는 컴파일 과정에서 상수로 변환됨.(final)
인터페이스에서 선언한 메서드는 컴파일 과정에서 추상 메서드로 변환됨.
타입 상속과 형 변환
Calc calc = new CompleteCalc();
인터페이스를 구현한 클래스는 인터페이스 타입으로 변수를 선언하여 인스턴스를 생성할 수 있음.
인터페이스는 구현 코드가 없기 때문에 타입 상속이라고도 함.
역할
클라이언트 프로그램에 어떤 메서드를 제공하는지 알려주는 명세(specification) 또는 약속.
한 객체가 어떤 인터페이스의 타입이라 함은 그 인터페이스의 메서드를 구현했다는 의미.
클라이언트 프로그램은 실제 구현 내용을 몰라도 인터페이스의 정의만 알면 그 객체를 사용할 수 있음.
인터페이스를 구현해 놓은 다양한 객체를 사용함 - 다형성
Ex. JDBC를 구현한 오라클, MSSQL 라이브러리 등
strategy pattern
인터페이스를 활용하면 다양한 정책이나 알고리즘을 프로그램의 큰 수정없이 적용, 확장할 수 있음.
여러 개의 인터페이스 구현하기
인터페이스는 구현 코드가 없으므로 하나의 클래스가 여러 인터페이스를 구현할 수 있음.
디폴트 메서드의 이름이 중복되는 경우에는 재정의함.
인터페이스 상속
인터페이스 간에도 상속이 가능.
구현이 없으므로 extends 뒤에 여러 인터페이스를 상속받을 수 있음.
구현 내용이 없으므로 타입 상속(type inheritance)라고 함.
'자바기초' 카테고리의 다른 글
Thread (0) | 2020.06.18 |
---|---|
JDBC / MySQL Driver (0) | 2020.06.15 |
추상 클래스 응용 - 템플릿 메서드 (0) | 2020.05.30 |
추상 클래스 (0) | 2020.05.30 |
다운 캐스팅과 instanceof (0) | 2020.05.27 |