Kotlin 繼承

      在〈Kotlin 繼承〉中尚無留言

類別繼承

繼承是什麼? 為什麼要有繼承? 

假設我們有二個類別,分別為 class Pikachu(皮卡丘) 及 class Eve(依布),而這二個類別都同樣有 level的物件變數,且這二個類別都是神奇寶貝  “Pokemon”。

那麼我們就可以把共通的屬性 level置於父類別Pokemon,然後Pikachu及Eve繼承Pokemon。這樣就可以直接copy Pokemon 的 level屬性。

fun main(args:Array<String>){
var p1=Pikachu()
p1.level=100
var e1=Eve()
e1.level=10
println("p1 level : ${p1.level}")
println("e1 level : ${e1.level}")
}
open class Pokemon{
var level:Int=0
constructor(){
println("神奇寶貝出生了")
}
}
class Pikachu: Pokemon{
constructor(){
println("皮卡丘出生了")
}
}
class Eve: Pokemon{
constructor(){
println("Eve出生了")
}
}
結果:
神奇寶貝出生了
皮卡丘出生了
神奇寶貝出生了
Eve出生了
p1 level : 100
e1 level : 10

Pikachu及Eve二個子類別,並沒有宣告level這個物件變數,但卻可以在p1及e1取得level,這就表示Pikachu及Eve這二個類別 copy了Pokemon裏的level變數。

class 預設為final

kotlin的類別預設為final,是不准被繼承的。所以為了要能繼承Pokemon, 就必需父類別Pokemon之前加上open 關鍵字,才可被Pikachu繼承。

繼承運算子 “:”

kotlin繼承使用 “:” 運算子,跟Java的 “extends” 是同樣的意思。

🔒 更多內容,請登入會員繼續閱讀。

立即登入

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *