Sealed Classes사용 할 경우 상속을 제한 할 수 있습니다.
Sealed Classes로 선언될 경우 동일한 패키지나 내부에서만 사용 할 수 있습니다.
Sealed Classes는 패키지 외부에서 선언해서 사용 할 수 없습니다.
sealed class Mammal(val name: String) // 1
class Cat(val catName: String) : Mammal(catName) // 2
class Human(val humanName: String, val job: String) : Mammal(humanName)
fun greetMammal(mammal: Mammal): String {
when (mammal) { // 3
is Human -> return "Hello ${mammal.name}; You're working as a ${mammal.job}" // 4
is Cat -> return "Hello ${mammal.name}" // 5
} // 6
}
fun main() {
println(greetMammal(Cat("Snowy")))
}
결과 : Hello Snowy
1. sealed class 선언
2. 하위 클래스 정의
3. when 문에서 sealed class 인수로 사용.
4. Human 클래스 전달 받을 경우 Smart case가 동작되어 전달 받은 클래스에 맞게 캐스팅.
5. Cat 클래스 전달 받을 경우 Smart case가 동작되어 전달 받은 클래스에 맞게 캐스팅.
6. sealed class는 else 케이스는 필요 하지 않음.
출처 : https://play.kotlinlang.org/byExample/03_special_classes/03_Sealed%20Classes
반응형
'Language > Kotlin' 카테고리의 다른 글
[Kotlin] Object 키워드(Object Keyword)란? (35) | 2021.07.17 |
---|---|
[Kotlin] enum 클래스(Enum Classes)란? (0) | 2021.07.17 |
[Kotlin] 데이터 클래스(Data Classes)란? (0) | 2021.07.14 |
[Kotlin] if 조건문 (Conditional Expression) (34) | 2021.06.28 |
[Kotlin] 반복문 만들기 (Loops) (0) | 2021.06.21 |