1. 인터페이스 이란?
ㅇ 서로 다른 요소들 간에 쉽게 상호 작용이 가능하도록 하는 경계면
- 설계,초기 코딩 등을 할 때는, 대상에 어떤 속성과 메소드들이 존재하는지 명세 만 해놓고,
- 실제 구현은, 각 구현체 마다 다르게 구현할 수 있게 약속하여 둔 것
ㅇ 인터페이스의 주요 특징
- 추상화 : 기능의 명세만 제공, 그 기능의 내부 구현은 숨김
. 세부 사항에 대해 알 필요 없이 인터페이스를 통해 필요한 기능을 사용 가능
- 독립성 : 각 구성 요소 마다 독립적으로 개발, 변경, 유지보수 가능
. 구성 요소 간의 의존성을 줄여, 코드의 재사용성과 확장성을 높임
- 표준화 : 특정 기능을 어떻게 호출할지에 대한 규칙을 정의
. 동일한 방식으로 다양한 모듈을 사용, 결합 가능
2. [객체지향언어] 인터페이스
ㅇ 기능 스펙을 모아 명세해놓기 만 한 것 임
- 즉, 인터페이스는 실제 객체가 아니며,
- 단순히 기능 스펙을 모아 명세해놓기 만 한 것임
ㅇ 일종의 클래스 템플릿 임
- 즉, 인터페이스는 클래스를 위한 일종의 템플릿이라고도 할 수 있음
- 비록 클래스 처럼 정의되지만, 메소드를 직접 처리하거나, 객체(인스턴스)를 만들 수 없음
ㅇ 특히, 공통 메소드 정의시에 유용함
- 서로 다른 성격의 클래스들에게서, 공통으로 사용할 만한 메소드를 정의하는데에 유용한 도구
ㅇ 즉, 다형태성을 구현하는 방법 중 하나
- (다형태성 : 프로그램의 문맥에 따라 여러 다른 형태나 동작을 할 수 있는 능력)
- 例) 자바 언어에서는, `interface 키워드`를 사용하여 다형성을 지원 함
. 이를 통해 다양한 객체가 동일한 방식으로 처리 가능
3. [객체지향언어] 인터페이스의 활용
ㅇ 인터페이스의 용도
- 공통적인 기능 선언
. 주로, 인터페이스 내부에 공통기능을 선언 만하고,
. 하위 클래스에서 그 인터페이스 내부에 선언된 메소드들을 세부적으로 구현
- 즉, 다른 클래스 간에 공통적인 기능을 정의할 때, 인터페이스를 사용함
ㅇ 인터페이스의 사용
- 같은 인터페이스를 사용하는 클래스들은,
. 그 인터페이스에서 제공하는 메소드들을 공통으로 쓸 수 있음
- 결국, 그 인터페이스에서 정한대로,
. 같은 인자 형식, 같은 리턴형, 같은 메소드 이름까지도 똑같은 것을 사용할 수 있음
4. [객체지향언어] 인터페이스와 추상클래스의 차이
ㅇ 인터페이스 : 다중 상속을 지원, 오직 메소드의 선언 만 있을 수 있음
ㅇ 추상 클래스 : 단일 상속만 가능, 메소드의 부분적인 구현이 가능