정의
- abstract 키워드를 사용하여 선언된 클래스
- 하나 이상의 추상 메서드(구현되지 않은 메서드)를 포함할 수 있다
- 인스턴스를 직접 생성할 수 없다
- 서브클래스에서 상속받아 사용해야 한다
목적
- 공통된 기능은 구현하고, 특정 기능은 하위 클래스에 위임할 때 사용
- 코드 재사용성과 구조적 설계를 위해 사용됨
문법 예시
abstract class Animal {
// 추상 메서드 (하위 클래스가 구현해야 함)
abstract void makeSound();
// 일반 메서드 (공통 구현 가능)
void eat() {
System.out.println("This animal eats food.");
}
}
class Dog extends Animal {
@Override
void makeSound() {
System.out.println("Bark");
}
}
특징 요약
| |
특징 |
| abstract 키워드 |
클래스 또는 메서드에 사용 |
| 인스턴스 생성 가능 여부 |
X |
| 생성자 포함 여부 |
O(상속시 super로 호출) |
| 필드/메서드 포함 여부 |
O(일반 필드/ 메서드가능) |
| 인터페이스와 차이점 |
일부 구현 가능 (인터페이스는 모든 메서드가 기본적으로 추상적) |