天天看點

【Kotlin】枚舉和印章類

印章類

印章類又稱為密封類,用來表示受限的類繼承結構:當一個值為有限幾種的類型, 而不能有任何其他類型時。使用​

​sealed​

​關鍵字修飾類,印章類可以有子類,但是所有的子類都必須要内嵌在印章類中

現有母驢、公驢、公馬三隻動物

母驢+公驢=驢子

母驢+公馬=騾子

我們建立一個Son class來形容三隻動物的兒子,由于隻能是驢子,或騾子,是以我們加關鍵字​

​sealed​

fun main(args: Array<String>) {
  var son1:Son = Son.donkey()
  var son2:Son = Son.mule()
  var son3:Son = Son.donkey()
  
  var list = listOf<Son>(son1,son2,son3)
  for(s in list){
    if(s is Son.donkey){
      s.sayHello()
    }
  }
  
}      

不能直接執行個體Son的,因為它有關鍵字​

​sealed​

​​,沒有構造方法,是以這樣寫會報錯

【Kotlin】枚舉和印章類

檢視運作結果

【Kotlin】枚舉和印章類

枚舉

enum class Week{
  星期一,星期二,星期三,星期四,星期五,星期六,星期天
}

fun main(args:Array<String>){
  println(Week.星期一.ordinal)
  println(Week.星期天.ordinal)
}      

兩者差別

繼續閱讀