본문 바로가기
Language/Kotlin

[Kotlin] 클래스를 봉인한다.(Sealed Classes)란?

by Jay Son 아기 냥이 해린 짱💖 2021. 7. 17.

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

 

Kotlin Playground: Edit, Run, Share Kotlin Code Online

 

play.kotlinlang.org

 

반응형