728x90
열거형은 특정 값을 의마하는 상수들을 모와 관리하는 개념
Sealed 객체를 모아 관리하는 개념
package sealed
fun main() {
val v2 = Number2.SealedOne(1)
val v3 = Number2.SealedTwo(2)
checkNumber2(v2)
checkNumber2(v3)
}
enum class Number(val num: Int) {
ONE(1),TWO(2)
}
fun checkNumber(a1: sealed.Number) {
when (a1) {
Number.ONE -> println("1입니다")
Number.TWO -> println("2입니다")
}
}
sealed class Number2{
class SealedOne(val a1:Int,val a2:Int):Number2()
class SealedTwo(val a1:Int):Number2(){
fun sealedFun2(){
println("selaedTwo의 sealedFun2 입니다")
}
}
class SealedThree(val a1:Int):Number2()
}
fun checkNumber2(obj: Number2) {
when(obj){
// 스마트 캐스팅 발생
is Number2.SealedOne -> {
println("One 입니다")
println("obj.a1 = ${obj.a1}")
}
is Number2.SealedTwo ->{
println("Two 입니다")
println("obj.a1 = ${obj.a1}")
obj.sealedFun2()
}
is Number2.SealedThree -> println("Three 입니다")
}
}
728x90