[Java] 객체지향 프로그래밍 - 인터페이스(Interface)란?
by 우와한개발자
1. 인터페이스(interface)란?
- 인터페이스는 서로 주고받는 표준을 정의
- 기능의 명세(계약의 정의)를 위해 사용함(기술 면접에서의 답변으로 사용. 단순히 다중상속지원하기 위해서라는 답변은 50점짜리 답변.)
- is a 관계.
- 점선의 닫힌 화살표 사용.
- 다중상속 가능
- 부모에서 throws 하지 않은 새로운 예외는 throws 할 수 없음.(즉, 부모보다 더 큰 예외를 자식에서 던질 수 없음.)
interface InterfaceName [extends SuperInterface1, SuperInterface2, ...] {
interfaceBody;
[public static final] data-type variableName;
[public abstract] return-type methodName(parameter list);
}
// 대괄호 생략 가능.
2. 인터페이스 사용
- 인터페이스를 사용한다 = 인터페이스를 구현한다.
- implements 예약어 이용.
- 여러 개의 인터페이스 구현 가능.
class className implements InterfaceName1, InterfaceName2, ... {
classBody;
}
3. 인터페이스의 멤버
1) 상수와 추상메서드
- 변수는 자동으로 public static final로 선언됨 = 상수
- 메서드는 body가 없으며 자동으로 public abstract로 선언됨 = 추상 메서드
2)default 메서드
- Java 8부터 추가
- 인터페이스도 구현된 메서드를 가질 수 있음
- default 메서드는 인터페이스에서 정의해놓지만, 실제 사용은 인터페이스를 구현한 클래스를 통해서 사용하게 됨.
3) static 메서드
- Java 8부터 추가
- 인터페이스의 구현된 메서드가 static으로 정의되어있다면 인터페이스 이름으로 메서드 호출가능
4) private 메서드
- default 메서드 또는 static 메서드에서만 사용할 메서드를 정의해아할때 사용.
- default 메서드에서 사용 → private
- static 메서드에서 사용 → private static
4. 인터페이스 다중상속
- 자바에서 클래스는 다중 상속이 불가능하지만 인터페이스는 구현부가 없기 때문에 다중 상속이 가능함.
5. 인터페이스와 추상클래스
1) 인터페이스 interface
- 다중상속 : 클래스의 다중 상속을 지원하지 않아 여러 개의 인터페이스를 구현해 다중상속 효과 가능.
- 행위(behavior)의 표준화 : 여러 클래스가 동일한 동작을 공유하고자 할때 일관된 행동 보장
- 계약(constract) 정의 : 클래스가 특정 동작을 구현하도록 강제함으로써 계약 정의(기능의 명세)
2) 추상클래스 abstract class
- 상속 및 확장 : 공통된 기능을 재사용할 수 있도록 함.
- 부분적인 구현 : 일부만 구현하고 일부는 서브 클래스에서 구현하도록 할 수 있음.
- 공통적인 필드와 메서드 : 중복 코드 감소
- 템플릿 메서드 패턴(Template Method Pattern) : 알고리즘의 구조를 정의하고 일부 단계를 서브 클래스에게 위임함.
'언어 > Java' 카테고리의 다른 글
| [Java] 람다표현식(Lambda Expression) / 함수형 인터페이스 / 메서드 참조 연산(::) (0) | 2026.03.03 |
|---|---|
| [Java] 예외(Exception) - try catch문, throws, throw , 예외 종류 (0) | 2026.03.02 |
| [Java] 객체지향 프로그래밍 - final, abstract (0) | 2026.02.27 |
| [Java] 객체지향 프로그래밍 - static 구문, 초기화블록, 싱글톤 디자인 패턴 (0) | 2026.02.27 |
| [Java] 객체지향프로그래밍 - 다형성 (0) | 2026.02.27 |
블로그의 정보
우와한개발자 님의 블로그
우와한개발자