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.

相关推荐
tachibana226 分钟前
与其他语言相比,使用 Go 有什么好处?
开发语言·后端·golang·go
阿俊-全栈开发5 小时前
LikeShop 单商户SaaS商城分销模块二开:佣金计算与结算逻辑实现
java·开发语言·微服务·likeshop·likeshop开源商城·likeshop多商户
m0_380743878 小时前
C++中的freopen的用法实例详解
开发语言·c++
Escalating_xu8 小时前
【Python】基础语法(1):常量、变量、类型、输入输出与运算符
开发语言·python
jimy19 小时前
polymorph.cpp里面的“析构函数、智能指针”问题
开发语言·c++
m0_380743879 小时前
PHP 8.3 缓存清除不生效怎么排查
开发语言·php
朝朝辞暮i9 小时前
C++ 第 6 课:switch —— 多状态选择
开发语言·c++·算法
小凡geo9 小时前
本地商家 GEO:用脚本一键生成 FAQPage 结构化数据,让 AI 切片更稳
开发语言·人工智能·python·microsoft·搜索引擎·ai
朝朝辞暮i10 小时前
C++ 第 4 课:if / else —— 让程序自己做决定
开发语言·c++
波力海苔夹心脆67510 小时前
C# 值类型与引用类型详解:存储位置、赋值机制、参数传递、相等比较、装箱拆箱与常见陷阱
开发语言·jvm·经验分享·笔记·c#·.net