[Kotlin] Sealed Class


[Kotlin] Sealed Class

봉인된 클래스: 클래스 계층 정의 시 계층 확장 제한 상위 클래스에 sealed 변경자를 붙이면 그 상위 클래스를 상속한 하위 클래스 정의를 제한 가능 sealed 클래스의 하위 클래스를 정의할 때는 반드시 상위 클래스 안에 중첩시켜야 함 sealed class Expr { class Num(val value: Int): Expr() class Sum(val left: Expr, val right: Expr): Expr() } sealed를 사용해서 기반 클래스를 sealed로 봉인함 기반 클래스인 Expr의 모든 하위 클래스 Num, Sum을 중첩 클래스로 나열함 fun eval(e: Expr): Int = when(e) { is Expr.Num -> e.value is Expr.Sum -> eval(e.right) + eval(e.left) } 그러면 when 식에서의 경우 모든 하위 클래스를 검사하기에 별도의 else 분기가 없어도 됨 sealed로 표시된 클래스는 자동으로 o...


#kotlin #sealed

원문링크 : [Kotlin] Sealed Class