원래 중첩 클래스는 외부 클래스를 내부 클래스에 상속할 수 없다.
그런데 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 |