??如果一個類的子類個數(shù)是有限的,那么 kotlin 中可以把這種父類定義為密封類垫卤,密封類是一種抽象類父丰,它限定了子類個數(shù)。
- 密封類的聲明掘宪,需要私用關(guān)鍵字 sealed 修飾蛾扇。密封類本身就是抽象類不需要使用 abstract 修飾,一定也是 open 的魏滚,密封類不能實(shí)例化镀首。
sealed class Person(val name: String, val age: Int)
class Student(name: String, age: Int, private val school: String) : Person(name, age)
class Worker(name: String, age: Int, factory: String) : Person(name, age)
fun main(args: Array<String>) {
val p1 = Student("小三", 18, "清華大學(xué)")
val p2 = Student("小四", 18, "北京大學(xué)")
val p3 = Worker("工人1", 20, "鋼廠")
val p4 = Worker("工人2", 20, "礦廠")
}
提示:密封類和枚舉類的區(qū)別:密封類子類與枚舉類常量成員是對應(yīng)的,密封類子類可以有不同的內(nèi)部結(jié)構(gòu)鼠次,子類可以有多個構(gòu)造函數(shù)更哄,可以創(chuàng)建多個不同的實(shí)例芋齿。而枚舉類常量成員的構(gòu)造函數(shù)是固定的,由枚舉類定義好的成翩,每一個枚舉類常量只能創(chuàng)建一個實(shí)例觅捆。