kotlin 密封类

密封类,限制了有哪些子类,所有子类都在一个文件中。写个简单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.

相关推荐
电商API_180079052471 分钟前
电商平台公开数据采集实践:基于合规接口的数据分析方案
开发语言·数据库·人工智能·数据挖掘·数据分析·网络爬虫
小陈工2 分钟前
2026年3月22日技术资讯洞察:数据库优化进入预测时代,网络安全威胁全面升级
java·开发语言·数据库·python·安全·web安全·django
2401_894241923 分钟前
基于C++的反射机制探索
开发语言·c++·算法
xyq20245 分钟前
ionic 单选框详解
开发语言
wWYy.10 分钟前
STL:map与unordered_map
开发语言·c++·stl
亓才孓17 分钟前
[Java笔试]易错点总结
java·开发语言
crescent_悦19 分钟前
C++:Invert a Binary Tree
开发语言·c++
:12120 分钟前
java---过滤器,监听器
java·开发语言
2401_8732046524 分钟前
C++与Docker集成开发
开发语言·c++·算法
实心儿儿24 分钟前
C++ —— map和set的使用
开发语言·c++