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.

相关推荐
琹箐10 分钟前
最大堆和最小堆 实现思路
java·开发语言·算法
Monly2143 分钟前
Java:修改打包配置文件
java·开发语言
我命由我123451 小时前
Android 广播 - 静态注册与动态注册对广播接收器实例创建的影响
android·java·开发语言·java-ee·android studio·android-studio·android runtime
island13141 小时前
CANN ops-nn 算子库深度解析:核心算子(如激活函数、归一化)的数值精度控制与内存高效实现
开发语言·人工智能·神经网络
xcLeigh1 小时前
Python入门:Python3 requests模块全面学习教程
开发语言·python·学习·模块·python3·requests
xcLeigh1 小时前
Python入门:Python3 statistics模块全面学习教程
开发语言·python·学习·模块·python3·statistics
秋邱2 小时前
用 Python 写出 C++ 的性能?用CANN中PyPTO 算子开发硬核上手指南
开发语言·c++·python
wenzhangli72 小时前
ooderA2UI BridgeCode 深度解析:从设计原理到 Trae Solo Skill 实践
java·开发语言·人工智能·开源
灵感菇_2 小时前
Java 锁机制全面解析
java·开发语言
wazmlp0018873693 小时前
python第三次作业
开发语言·python