Kotlin中的继承
如何定义继承?当然是使用open关键字啦
案例:
open class Kotlin4_1 {
open val str: String = "我是父类"
open var str1: String = "我可以被重写"
open fun parent() = "I'm a parent class"
fun parent1(): String {
return "It's not open"
}
}
子类继承
注意事项:
使用 : 代表继承
父类需加()
class Kotlin4 : Kotlin4_1()
子类重写父类的变量
- 修改父类变量值
/*
重写父类的val修饰变量 4种定义方式
*/
//1.修改父类str值
override var str:String="我是子类"
override val str:String="我是子类"
override val str:String
get():String{
var suStr=super.str
return "$suStr 我是子类"
}
override var str: String = ""
set(value) {
field = value
}
- 不修改父类变量值
// override val str: String
// get() = super.str
- 修改父类var定义变量
/*
重写父类的var修饰变量
*/
// override var str1: String
// get() = super.str1
// set(value) {}
override var str1: String = ""
get() = if (field.isNotEmpty()) field else super.str1
set(value) {
field = value
}
子类继承父类的函数
/*
重写父类定义函数
*/
override fun parent(): String {
return "I changed the parent class"
}
/**
* 不可以重写父类非open定义函数
* open代表的是java中final
*/
fun parent1(i: Int): String {
return ""
}
子类继承父类的构造函数
/**
* 构造函数的基类
*/
open class Kotlin4_2 constructor(num: Int) {
init {
PrintlnUtils(""+num)
}
constructor(num: Int, num1: Int) : this(num) {
PrintlnUtils(""+num)
}
}
class Kotlin4_2_1(num: Int, num1: Int) :Kotlin4_2(num){
}