2026-04-04
인터페이스와 추상 클래스 차이
1. 추상 클래스
공통된 상태와 일부 구현을 함께 가질 수 있는 클래스
즉, “공통 기능은 미리 구현해두고, 일부만 자식이 구현하게 하고 싶을 때” 사용한다.
특징
abstract키워드 사용- 추상 메서드 + 일반 메서드 둘 다 가능
- 필드(멤버 변수) 가질 수 있음
- 생성자 가질 수 있음
- 상속은
extends - 단일 상속만 가능
예시
abstract class Animal {
String name;
Animal(String name) {
this.name = name;
}
void eat() {
System.out.println("먹는다");
}
abstract void sound();
}
2. 인터페이스
구현 객체들이 따라야 하는 규약, 기능 명세
즉, “무엇을 할 수 있는가”를 정의하는 데 가깝다.
특징
interface키워드 사용- 메서드의 규약 정의 중심
- 다중 구현 가능
- 구현은
implements - 클래스 간 공통 기능보다 역할 분리에 적합
- 다형성 활용에 매우 유리
예시
interface Payment {
void pay();
}
class CardPayment implements Payment {
@Override
public void pay() {
System.out.println("카드 결제");
}
}
핵심 차이
| 구분 | 추상 클래스 | 인터페이스 |
|---|---|---|
| 목적 | 공통 기능 + 공통 상태 제공 | 기능 규약 정의 |
| 필드 | 가능 | 상수만 가능 |
| 일반 메서드 | 가능 | 가능(기본/정적 메서드) |
| 생성자 | 가능 | 불가 |
| 상속/구현 | extends | implements |
| 다중 상속 | 불가 | 다중 구현 가능 |
- 이름수정