자바(Java)에서 열거형(Enum)은 고정된 상수 값들의 집합을 저장하는 특수한 데이터 타입입니다. 예를 들어 요일, 월, 계절처럼 변하지 않는 값을 그룹으로 관리할 때 유용하게 사용됩니다.
열거형은 enum 키워드 뒤에 이름을 붙여 다음과 같이 정의합니다.
enum Days {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}배열과 마찬가지로, 열거형에 포함된 요소(상수)들은 0부터 시작하는 숫자로 식별됩니다. 위 예제에서는 각 요일이 아래 그림과 같이 인덱스 번호로 매핑됩니다.

열거형의 구조와 특징
열거형은 클래스와 매우 유사한 성격을 가집니다. 따라서 내부에 변수, 메서드, 생성자를 포함할 수 있으며, 추상 메서드가 아닌 구체적인(concrete) 메서드만 정의할 수 있다는 점이 특징입니다.
Enum은 다른 클래스를 확장(상속)할 수 있을까?
결론부터 말하면 불가능합니다.
모든 자바 열거형은 내부적으로 java.lang.Enum 클래스를 이미 상속하고 있습니다. Enum은 자바 언어의 모든 열거형 타입의 최상위 기반(base) 클래스 역할을 합니다.
그런데 자바는 다중 상속(multiple inheritance)을 지원하지 않기 때문에, 하나의 클래스가 두 개 이상의 클래스를 동시에 상속할 수 없습니다. 따라서 이미 Enum을 상속 중인 열거형이 다른 클래스를 추가로 확장하려고 하면 컴파일 시점에 오류가 발생합니다.
예제 코드
아래 자바 코드에서는 Sample이라는 클래스를 만들고, Scooters라는 열거형이 이 클래스를 상속하려고 시도하고 있습니다.
import java.util.Scanner;
class Sample {
}
enum Scooters extends Sample {
}실행 결과
이 코드를 컴파일하면 다음과 같은 컴파일 오류가 발생합니다.
D:\>javac EnumExample.java
EnumExample.java:5: error: '{' expected
enum Scooters extends Sample{
^
EnumExample.java:5: error: ',', '}', or ';' expected
enum Scooters extends Sample{
^
2 errors정리
- 자바의 모든 열거형은 암묵적으로
Enum클래스를 상속합니다. - 자바는 다중 상속을 지원하지 않으므로, 열거형이 다른 클래스를
extends로 확장하는 것은 허용되지 않습니다. - 대신 열거형은 인터페이스(interface)를 구현(implements)하는 방식으로 기능을 확장할 수 있습니다.
- 열거형 안에는 변수, 생성자, 구체적인 메서드를 자유롭게 정의할 수 있습니다.