/**
* 繼承
* 1.類(lèi)默認(rèn)是final類(lèi)的,不可以繼承,需要繼承需要加abstract或者open關(guān)鍵字
* 2.不加open關(guān)鍵詞的方法也是final型的,不能被重寫(xiě)
* 3.對(duì)于abstract關(guān)鍵詞修飾的方法,子類(lèi)必須實(shí)現(xiàn),不需要使用super關(guān)鍵字
* 4.如子類(lèi)需要重寫(xiě)父類(lèi)的屬性,父類(lèi)的屬性需加open關(guān)鍵字,子類(lèi)需加override關(guān)鍵字
*/
abstract class Person(open val age: Int) {
open fun work() {
}
}
class Marker(age: Int) : Person(age) {
override val age: Int
get() = 0
override fun work() {
super.work()
println("我是碼農(nóng),在寫(xiě)代碼")
}
}
class Doctor(override val age: Int) : Person(age) {
override fun work() {
super.work()
println("我是醫(yī)生,在看病")
}
}
fun main(args: Array<String>) {
val person: Person = Marker(23)
person.work()
println(person.age)
val person2: Person = Doctor(29)
person2.work()
println(person2.age)
}

運(yùn)行結(jié)果