Taiwan Kotlin User Group 的網站,在台灣推廣 Kotlin 程式語言,舉辦相關活動。如果對 Kotlin 有興趣,想要多瞭解一些,歡迎來我們的社群一起聚會!
宣告 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 讀書會 !