Kotlin学习笔记(三)---Kotlin密封类

本文介绍了Kotlin中的密封类概念及其用法。密封类类似于枚举,但允许子类拥有多个实例。文章通过示例展示了如何定义密封类及其子类,并解释了在同一个文件中声明子类的要求。此外,还讨论了密封类在when表达式中的应用,以及如何避免使用else子句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

密封类,可以理解为枚举,规定了有限个类型,不可以存在其他类型,但枚举每个枚举常量只存在一个示例,但是密封类的子类可以有多个示例,所以可以将密封类看做是枚举的拓展,基于枚举,高于枚举,青出于蓝而胜于蓝。


正文

密封类和普通类的区别,在于密封类使用了sealed修饰符,虽然密封类也可以有子类,但是所有子类都必须在与密封类自身相同的文件中声明。
还是上栗子:

    sealed class Time {

    }

    data class Time1(val number: Int) : Time() {
    }

    data class Time2(val number: Int, val name: String) : Time() {
    }

注意:扩展密封类子类的类(间接继承者)可以放在任何位置,而无需在同一个文件中。
使用密封类的关键好处在于使用 when
表达式
的时候,如果能够验证语句覆盖了所有情况,就不需要为该语句再添加一个 else子句了。

    fun main(args: Array<String>) {
        println(list(Time1(5)))
        println(list(Time2(8,"hehe")))
}

 fun list(time:Time) : String = when(time){
       is Time1 -> "${time.number}"
       is Time2 -> time.name
   }

后记

关于密封类,使用比较灵活,记住所有子类都必须在与密封类自身相同的文件中声明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值