728x90
Sealed 클래스
- 자기 자신이 추상클래스이고, 자신을 상속받는 여러 서브 클래스들을 가질 수 있음
- enum 클래스와 달리 상속을 지원하여, 상속을 활용하여 구현이 가능
- 자신을 상속받는 서브 클래스의 종류를 제한할 수 있음
Sealed 클래스 특징
- 서브 클래스들은 반드시 같은 파일 내에 선언 되어야함
- sealed 클래스는 기본적으로 추상클래스임
- sealed 클래스는 private 생성자를 기본적으로 가지게 됨
Sealed 클래스 예시
sealed class Color {
data class Red(val r: Int, val g: Int, val b: Int) : Color()
data class Orange(val r: Int, val g: Int, val b: Int) : Color()
data class Yellow(val r: Int, val g: Int, val b: Int) : Color()
}
fun main() {
val color: Color = Color.Red(255, 0, 20)
when (color) {
is Color.Red -> println("빨강")
is Color.Orange -> println("주황")
is Color.Yellow -> println("노랑")
}
}
- 서브 클래스들은 class, data class, object 모두 가능함
- 같은 파일 내에서 선언되어야함
Sealed 클래스 이점
- sealed 클래스의 서브 클래스 각각에 여러개의 인스턴스 생성이 가능함
- 계층을 생성할 수 있음 (enum 확장판)
'KOTLIN' 카테고리의 다른 글
[KOTLIN] 불필요한 객체 생성을 피하라 (0) | 2022.08.03 |
---|---|
[KOTLIN] 멤버 확장 함수의 사용을 피하라 (이펙티브 코틀린) (0) | 2022.07.27 |
[KOTLIN] 복잡한 객체를 생성하기 위한 DSL을 정의하라 (이펙티브 코틀린) (0) | 2022.07.20 |
[KOTLIN] 일반적인 프로퍼티 패턴은 프로퍼티 위임으로 만들어라 (이펙티브 코틀린) (0) | 2022.07.13 |
[KOTLIN] 제네릭 타입과 VARIANCE 한정자를 활용하라 (이펙티브 코틀린) (0) | 2022.07.10 |