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.

相关推荐
郝亚军1 分钟前
IEEE 754 单精度浮点的SEM表示
开发语言·c++·算法
zhangjw348 分钟前
第15篇:Java多线程零基础入门,进程线程、线程创建方式、线程生命周期、线程安全彻底吃透
java·开发语言·面试
蝈理塘(/_\)大怨种9 分钟前
类和对象 (上)
java·开发语言
小新11030 分钟前
qt creator 将qInfo的输出日志写入日志文档,方便查看
开发语言·qt
hssfscv1 小时前
QT的学习记录1
开发语言·qt·学习
SunnyDays10111 小时前
Python操作Excel批注:从基础添加到高级自定义的完整指南
开发语言·python·excel
Yyyyyy~2 小时前
【C++】数组篇
开发语言·c++
牛肉在哪里2 小时前
ros2 从零开始27 编写广播C++
开发语言·c++·机器人
yong99902 小时前
基于Qt的文件传输系统
开发语言·qt
yuan199972 小时前
基于 MATLAB PSO 工具箱的函数寻优算法
开发语言·算法·matlab