Kotlin學習筆記(三) Kotlin密封類

2021-08-06 06:22:05 字數 718 閱讀 3344

前言

密封類,可以理解為列舉,規定了有限個型別,不可以存在其他型別,但列舉每個列舉常量只存在乙個示例,但是密封類的子類可以有多個示例,所以可以將密封類看做是列舉的拓展,基於列舉,高於列舉,青出於藍而勝於藍。

正文密封類和普通類的區別,在於密封類使用了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) 

fun list(time:time) : string = when(time)"

is time2 -> time.name

}

後記

關於密封類,使用比較靈活,記住所有子類都必須在與密封類自身相同的檔案中宣告。

kotlin學習筆記(三)

一 for for迴圈的三種方式,只要實現 了iterator,都可以使用for迴圈。fun main args array for index,value in list.withindex for indexvalue in list.withindex 二 具名引數 變長引數 預設引數 具名引...

kotlin學習筆記

屬性委託在單獨一頁中講 屬性委託。委託模式已經證明是實現繼承的乙個很好的替代方式,而 kotlin 可以零樣板 地原生支援它。derived類可以通過將其所有公有成員都委託給指定物件來實現乙個介面base inte ce base class baseimpl val x int base clas...

Kotlin學習筆記

該系列文章是本人梳理kotlin基礎知識所作,時間倉促可能會有不足,歡迎指正!kotlin學習筆記 1 基礎語法 kotlin學習筆記 2 基本資料型別,字串與陣列 kotlin學習筆記 3 條件控制與迴圈控制 kotlin學習筆記 4 容器 kotlin學習筆記 5 泛型和高階函式應用 kotli...