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

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

這個網誌中的熱門文章

nano 文字編輯器

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

16天記下7000單字

Android Studio 歷代版本下載點

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