내용 보기

작성자

관리자 (IP : 172.17.0.1)

날짜

2020-07-09 06:22

제목

[Kotlin] 코틀린 기초 06 - Enum 클래스


  • Enum 클래스

코틀린의 Enum은 다른 언어와 동일하게 열거형 상수로 쓰이면서 사용방법이 약간 다르다.

// 기본 열거형 상수

1
2
3
4
5
6
7
8
9
10
enum class Direction {
    NORTH,
    SOUTH,
    WEST,
    EAST
}
 
val direction: Direction = Direction.NORTH;
println("Name : ${direction.name} / Idx : ${direction.ordinal}");
 
cs

실행결과

Name : NORTH / Idx : 0


// 값 대입 열거형 상수

1
2
3
4
5
6
7
8
9
enum class Direction(val no:Int) {
    NORTH(0),
    SOUTH(1),
    WEST(2),
    EAST(3)
}
 
val direction: Direction = Direction.SOUTH;
println("Name : ${direction.name} / Idx : ${direction.ordinal} / No : ${direction.no}");
cs

실행결과

Name : NORTH / Idx : 1 / No : 1


// 다양한 데이터 대입 및 val선언으로 값 변경

1
2
3
4
5
6
7
8
9
enum class Direction(var no:Int, val str: String) {
    NORTH(0"notrh"),
    SOUTH(1"south"),
    WEST(2"west"),
    EAST(3"east")
}
 
val direction: Direction = Direction.SOUTH;
println("no : ${direction.no} / str : ${direction.str}");
cs

실행결과

no : 1 / str : south


1
2
direction.no = 10;
println("no : ${direction.no} / str : ${direction.str}");
cs

실행결과

no : 10 / str : south

열거 상수들은 사실 enum예약어로 선언한 클래스를 상속받는 또 다른 클래스들이다.

이때 서브 클래스의 이름은 없고 이러한 클래스를 익명 클래스(Anonymous class)라고 한다.

1
enum class Direction { NORTH }
cs

위 NORTH상수는 Direction클래스를 상속받고 있는 클래스 객체이다.

따라서

1
enum class Direction(var no:Int)
cs

위 처럼 열거형 클래스를 선언하면 하위 클래스에서는 상위 클래스의 생성자에 맞추어 호출해야 하므로 NORTH(0)이라고 표현하는 것이다.

출처1

출처2