Kotlin 教學【從零開始學 Kotlin 程式設計】密封類別(sealed class)

【從零開始學 Kotlin 程式設計】
線上教學課程目錄:https://bit.ly/2Kx7GrM
Youtube 課程播放清單:https://bit.ly/3qJ5a5Q

密封類別

當物件有限定狀態時,通常我們會使用「列舉列別(enum class)」,
但它比較適和用來判斷簡單的狀態,不接受變數傳遞,
所以當今天我們想傳遞變數運算時,則會改採用「密封類別(sealed class)」,
可以把它視為進階版的 enum class。

在 Kotlin 中,我們使用關鍵字「sealed」來定義一個密封類別。

sealed class MySealedClass {
    //密封類的成員,必須繼承自己類別 MySealedClass()
    //如果沒有參數應為 object 類型
    object State1 : MySealedClass()
    object State2 : MySealedClass()
    object State3 : MySealedClass()

    //有參數可為 class 或 data class 類型
    class State4(val value: Int) : MySealedClass()
}

class MyClass(private val data: MySealedClass) {
    fun show() =
        when (data) {
            is MySealedClass.State1 -> "State1"
            is MySealedClass.State2 -> "State2"
            is MySealedClass.State3 -> "State3"
            is MySealedClass.State4 -> "State4: ${data.value}"
            
//若少實現一種 MySealedClass 狀態條件判斷會噴錯,除非加入 else 判斷。
//          else -> "未知狀態"
        }
}

fun main() {
    println(MyClass(MySealedClass.State1).show())
    println(MyClass(MySealedClass.State4(100)).show())
}

那這次的課程就介紹到這邊囉~

順帶一提,KT 線上教室,臉書粉絲團,會不定期發佈相關資訊,不想錯過最新資訊,不要忘記來按讚,加追蹤喔!也歡迎大家將這套課程分享給更多人喔。

我們下次再見囉!!!掰掰

這個網誌中的熱門文章

2023 最新入門零基礎 Kotlin教學【從零開始學 Kotlin 程式設計】Kotlin 教學課程目錄 (Android Kotlin, IntelliJ IDEA, Android Studio, Android APP 開發教學)

Android Studio 歷代版本下載點

2022 最新入門零基礎 Flutter教學 【Flutter 程式設計入門實戰 30 天】Flutter 教學課程目錄 (IntelliJ IDEA 開發教學)

最新入門零基礎 Java 教學【從零開始學 Java 程式設計】Java教學課程目錄 (IntelliJ IDEA 開發教學)

nano 文字編輯器