Java를 공부하다 보면 interface
라는 개념이 등장합니다. 처음에는 추상 클래스와 비슷하게 느껴질 수 있지만, 인터페이스는 Java에서 매우 중요한 설계 도구입니다. 이번 글에서는 interface의 정의부터 사용 예시, 특징까지 정리해 보겠습니다.
1. 인터페이스란 무엇인가요?
Java에서 interface
는 클래스가 구현해야 할 메서드의 목록을 명세한 일종의 규격서입니다. 실제 동작(구현)은 포함하지 않고, 메서드 이름과 매개변수 등 구조만 정의합니다. 클래스가 이 인터페이스를 implements
로 구현하면, 반드시 해당 메서드들을 정의해야 합니다.
public interface Animal {
void sound();
}
Animal
인터페이스를 구현하는 클래스는 sound()
메서드를 반드시 정의해야 합니다.
public class Dog implements Animal {
@Override
public void sound() {
System.out.println("멍멍");
}
}
2. 인터페이스의 주요 특징
항목 | 설명 |
---|---|
모든 메서드는 기본적으로 abstract |
구현 없이 선언만 존재함 (단, Java 8 이후부터는 default , static 메서드 허용) |
모든 필드는 자동으로 public static final |
즉, 상수만 선언 가능 |
다중 구현 가능 | 하나의 클래스가 여러 인터페이스를 동시에 구현할 수 있음 |
구현 강제 | 인터페이스를 구현한 클래스는 모든 메서드를 반드시 정의해야 함 |
3. 클래스와의 차이점
구분 | 클래스 | 인터페이스 |
---|---|---|
상속 가능성 | 단일 상속만 가능 | 여러 개 구현 가능 |
메서드 | 구현 포함 가능 | 구현 불가 (default 메서드 제외) |
목적 | 상태와 동작을 모두 가짐 | 오직 동작(기능)의 명세만 가짐 |
4. 인터페이스의 장점과 활용
- 다형성(polymorphism): 여러 클래스가 같은 인터페이스를 구현하면, 해당 인터페이스 타입으로 처리 가능
- 결합도 낮추기: 코드가 구현체가 아닌 인터페이스에 의존하도록 하여 유연한 설계 가능
- 전략 패턴, 템플릿 패턴 등 디자인 패턴의 기반: 다양한 패턴에서 인터페이스가 핵심 역할
예시: 결제 전략을 인터페이스로 정의
public interface PaymentStrategy {
void pay(int amount);
}
public class CardPayment implements PaymentStrategy {
public void pay(int amount) {
System.out.println("카드로 " + amount + "원 결제");
}
}
5. 마무리
Java의 인터페이스는 객체지향 설계에서 빠질 수 없는 중요한 개념입니다. 인터페이스를 잘 활용하면 코드의 확장성과 유지보수성을 높일 수 있습니다. 실무에서도 다양한 라이브러리나 프레임워크에서 인터페이스를 적극적으로 활용하므로, 인터페이스의 원리와 특징을 제대로 이해하는 것이 중요합니다.
반응형
'개발 (Development) > Java' 카테고리의 다른 글
[Java] JPA에서 DTO는 Interface로 구현할까? Class로 구현할까? (4) | 2025.08.03 |
---|---|
[Java] MyBatis와 JPA 속도 비교: 어떤 상황에 어떤 선택이 더 나을까? (0) | 2025.08.03 |
[Java] MyBatis만 쓰던 내가 JPA를 처음 접했을 때 이해한 구조 정리 (0) | 2025.08.03 |
[Java] Spring Boot 프로젝트에서 MyBatis와 JPA를 함께 사용하는 방법과 오류 해결 과정 (0) | 2025.08.03 |
[Java] Spring Boot 2.x + Java 11 환경에서 JPA Native Query와 DTO 매핑 문제 해결 기록 (4) | 2025.08.03 |