본문 바로가기

자바기초

인터페이스

: 어떤 오브젝트에 대한 설명서

 

 

요소

- 추상 메서드

- 상수

- 디폴트 메서드 : 기본 구현을 가지는 메서드. 구현하는 클래스에서 재정의 가능 (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