open class Person(var name : String, var age : Int){// 基類
}
class Student(name : String, age : Int, var no : String, var score : Int) : Person(name, age)
如果子類沒有主構(gòu)造函數(shù)爪喘,則必須在每一個二級構(gòu)造函數(shù)中用 super 關(guān)鍵字初始化基類,或者在代理另一個構(gòu)造函數(shù)纠拔。初始化基類時秉剑,可以調(diào)用基類的不同構(gòu)造方法。
open class Person(name: String) {
constructor(name: String, age: Int) : this(name)
}
class Student : Person {
constructor(name: String) : super(name)//調(diào)用基類主構(gòu)造
constructor(name: String, age: Int) : super(name, age)//調(diào)用基類次級構(gòu)造
}
類中方法的重寫
使用fun聲明函數(shù)時默認為final修飾稠诲,不能被子類重寫秃症。如果基類允許子類重寫該函數(shù),則需要使用 open 關(guān)鍵字修飾, 子類重寫方法使用 override 關(guān)鍵詞:
open class Person { //基類
fun man() {//不允許子類重寫的方法
print("男人")
}
open fun women() {//允許子類重寫方法
print("女人")
}
}
class Gender : Person() {//子類
override fun women() {//重寫父類方法
// super.women()
}
}
open class BaseColor() {
open val red: String = "Red"http://基類可重寫的屬性
}
class redColor : BaseColor() {
override val red: String="Red1"http://重寫基類屬性
override val red: String//重寫基類屬性
get() = super.red
}
open class BaseColor() {
open val red: String = "Red"http://基類可重寫的屬性
}
class redColor : BaseColor() {
override var red: String="Red1"http://重寫基類屬性
override var red: String//重寫基類屬性
get() = super.red
}