[KOTLIN] SEALED CLASS

2022. 7. 27. 22:26·KOTLIN
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
'KOTLIN' 카테고리의 다른 글
  • [KOTLIN] 불필요한 객체 생성을 피하라
  • [KOTLIN] 멤버 확장 함수의 사용을 피하라 (이펙티브 코틀린)
  • [KOTLIN] 복잡한 객체를 생성하기 위한 DSL을 정의하라 (이펙티브 코틀린)
  • [KOTLIN] 일반적인 프로퍼티 패턴은 프로퍼티 위임으로 만들어라 (이펙티브 코틀린)
집한구석
집한구석
  • 집한구석
    tgyun615.info
  • 전체
    오늘
    어제
    • 카테고리 (183)
      • JAVA (38)
      • SPRING (15)
      • KOTLIN (23)
      • NETTY (1)
      • DEVOPS (3)
      • DOCKER (7)
      • KUBERNETES (2)
      • JAVASCRIPT (1)
      • SPLUNK (3)
      • ELK (7)
      • KAFKA (2)
      • GO (4)
      • ALGORITHM & DATA STRUCTURE (9)
      • IDE (5)
      • OS (16)
      • NETWORK (14)
      • GCP (2)
      • AWS (2)
      • DATABASE (10)
      • CLEANCODE (7)
      • OTHER (12)
  • 최근 글

  • 태그

    이펙티브 코틀린
    이펙티브코틀린
    AWS
    cleancode
    Kafka
    자바
    클린코드
    docker
    ElasticSearch
    splunk
    go
    프로그래머스
    Elk
    java
    코틀린
    엘라스틱서치
    SQL
    JPA
    Spring
    IntelliJ
  • 링크

    • github
    • linkedin
    • resume
  • hELLO· Designed By 정상우. v4.10.3
집한구석
[KOTLIN] SEALED CLASS
상단으로

티스토리툴바