본문 바로가기
Android/안드로이드 스터디(Kotlin)

Kotlin] 40. sealed Class

by 김마리님 2020. 12. 11.

원래 중첩 클래스는 외부 클래스를 내부 클래스에 상속할 수 없다.

그런데 sealed  클래스는 자신의 중첩 클래스 안에서만 상속을 허용한다.

 

- Sealed.kt

package sealedEx

sealed class Outer {
    class One : Outer()
    class Two : Outer()
    class Three : Outer()
}

상속이 허용된다. 그런데.. 다른 클래스를 보면.

 

- Other.kt

package sealedEx

//class Four : Outer()

주석을 풀면 다음처럼 컴파일 오류가 난다.

Cannot access '<init>': it is private in 'Outer' 오류이다. 접근할 수 없다고 한다.

 

모두가 같은 클래스를 가지고 있으므로 메인은.. 세번째가 출력된다.

 

package sealedEx

fun main() {
    val instance : Outer = Outer.Three()

    val text : String = when ( instance) {
        is Outer.One -> "첫번째"
        is Outer.Two -> "두번째"
        is Outer.Three -> "세번째"
    }

    println(text)
}

 

결과 :

 

세번째

반응형

'Android > 안드로이드 스터디(Kotlin)' 카테고리의 다른 글

Kotlin] 42. Pair  (0) 2020.12.17
Kotlin] 41. 위임  (0) 2020.12.14
Kotlin] 39. enum  (0) 2020.12.11
Kotlin] 38. 배열  (0) 2020.12.11
Kotlin] 37. for  (0) 2020.12.11