Skip to content

Latest commit

 

History

History
53 lines (34 loc) · 1.05 KB

kotlin-sealed-class-example.md

File metadata and controls

53 lines (34 loc) · 1.05 KB

Kotlin Sealed Class 範例

宣告 sealed class

sealed class Mammal(val name: String) 

特性

sealed class 限制只能被同一個 package 的類別繼承

package demo

import Mammal

class Demo(name: String) : Mammal(name) // 編譯錯誤

由於這個特性

sealed class 跟 enum 一樣

可以讓編譯器確定資料的可能個數

如果在條件式內列舉所有可能

就不需要宣告 else

class Cat(name: String) : Mammal(name)
class Dog(name: String) : Mammal(name)

fun greetMammal(mammal: Mammal): String {
    return when (mammal) {                                          
        is Dog -> "GoodBoy ${mammal.name}"
        is Cat -> "Hello ${mammal.name}"
    }
}

想看更多範例嗎?

可以看看

或加入 kotlin.tips 的 Kotlin 讀書會