Kotlin學(xué)習(xí)筆記(三)---Kotlin密封類(lèi)

前言

密封類(lèi),可以理解為枚舉,規(guī)定了有限個(gè)類(lèi)型,不可以存在其他類(lèi)型,但枚舉每個(gè)枚舉常量只存在一個(gè)示例,但是密封類(lèi)的子類(lèi)可以有多個(gè)示例,所以可以將密封類(lèi)看做是枚舉的拓展,基于枚舉,高于枚舉,青出于藍(lán)而勝于藍(lán)。


正文

密封類(lèi)和普通類(lèi)的區(qū)別,在于密封類(lèi)使用了sealed修飾符,雖然密封類(lèi)也可以有子類(lèi),但是所有子類(lèi)都必須在與密封類(lèi)自身相同的文件中聲明。
還是上栗子:

    sealed class Time {

    }

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

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

注意:擴(kuò)展密封類(lèi)子類(lèi)的類(lèi)(間接繼承者)可以放在任何位置,而無(wú)需在同一個(gè)文件中。
使用密封類(lèi)的關(guān)鍵好處在于使用 when
表達(dá)式
的時(shí)候,如果能夠驗(yàn)證語(yǔ)句覆蓋了所有情況,就不需要為該語(yǔ)句再添加一個(gè) 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
   }```

---------------------
####后記
關(guān)于密封類(lèi),使用比較靈活,記住所有子類(lèi)都必須在與密封類(lèi)自身相同的文件中聲明。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評(píng)論 19 139
  • 前言 人生苦多,快來(lái) Kotlin ,快速學(xué)習(xí)Kotlin! 什么是Kotlin? Kotlin 是種靜態(tài)類(lèi)型編程...
    任半生囂狂閱讀 26,669評(píng)論 9 118
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,253評(píng)論 6 342
  • 1.icon圖片 Assets.xcassets -> AppIcon29pt 40pt 60pt 對(duì)應(yīng)的 2x ...
    吾乃常山趙子龍閱讀 376評(píng)論 0 0
  • 時(shí)光荏苒,每分每秒都過(guò)得特別快。已經(jīng)快要過(guò)年了,在2016年里我們有收獲,也有失敗。有成功,也有淚水。但無(wú)論我們經(jīng)...
    星座點(diǎn)點(diǎn)閱讀 257評(píng)論 0 0

友情鏈接更多精彩內(nèi)容