JAVA · 객체지향
추상 클래스 vs 인터페이스
추상 클래스와 인터페이스의 차이점과 각각의 적절한 사용 시나리오를 비교합니다.
객체지향중급abstractinterface추상클래스extends
핵심 설명
추상 클래스와 인터페이스의 차이점과 각각의 적절한 사용 시나리오를 비교합니다.
Java code
// 추상 클래스 — 상태(필드) + 구현 공유
abstract class Animal {
protected String name; // 상태 보유 가능
Animal(String name) { this.name = name; }
abstract void speak(); // 추상 메서드
void sleep() { // 구현 메서드
System.out.println(name + " 잠을 잡니다");
}
}
// 인터페이스 — 행동 계약
interface Flyable {
void fly(); // 추상 메서드
default void land() { // 기본 구현 (Java 8+)
System.out.println("착륙합니다");
}
static Flyable create(String type) { // 정적 메서드
return () -> System.out.println(type + " 날아갑니다");
}
}
// 다중 인터페이스 구현 가능
class Bird extends Animal implements Flyable {
Bird(String name) { super(name); }
@Override void speak() { System.out.println("짹짹"); }
@Override public void fly() { System.out.println(name + " 날아갑니다"); }
}
class Main {
public static void main(String[] args) {
Bird b = new Bird("참새");
b.speak(); b.fly(); b.land(); b.sleep();
}
}학습 팁
상태와 구현 공유가 필요하면 추상 클래스, 행동 계약만 필요하면 인터페이스를 선택하세요. Java 8+에서는 인터페이스도 default 메서드를 가집니다.
주의할 점
클래스는 하나만 상속할 수 있지만 인터페이스는 여러 개 구현할 수 있습니다. 다중 상속이 필요하면 인터페이스를 활용하세요.
자주 묻는 질문
추상 클래스 vs 인터페이스란 무엇인가요?
추상 클래스와 인터페이스의 차이점과 각각의 적절한 사용 시나리오를 비교합니다.
추상 클래스 vs 인터페이스 학습 시 주의할 점은 무엇인가요?
클래스는 하나만 상속할 수 있지만 인터페이스는 여러 개 구현할 수 있습니다. 다중 상속이 필요하면 인터페이스를 활용하세요.
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.