密封类,限制了有哪些子类,所有子类都在一个文件中。写个简单demo测试下:
Kotlin
// HuManStatus是密封类,表示一个人想要做什么的状态
sealed class HuManStatus {
data class WashFeet(val costMoney: Double): HuManStatus() // 子类,表示花钱洗脚
data class AnMo(val costMoney: Double): HuManStatus() // 子类,表示花钱按摩
object Sleep: HuManStatus() // 单例对象,表示睡觉
}
fun dealWithHuManStatus(status: HuManStatus):Unit {
when (status) {
is HuManStatus.WashFeet -> println("花费${status.costMoney}洗个脚")
is HuManStatus.AnMo -> println("花费${status.costMoney}按个摩")
HuManStatus.Sleep -> println("没带钱,只能回家睡觉")
}
}
fun main() {
for (i in 0..5) {
val money = (0..1000).random()
if (money >= 700) {
dealWithHuManStatus(HuManStatus.WashFeet(money.toDouble()))
} else if (money >= 300) {
dealWithHuManStatus(HuManStatus.AnMo(money.toDouble()))
} else {
dealWithHuManStatus(HuManStatus.Sleep)
}
}
}
打印:

ok.