Kotlin中的继承

2018-12-05  本文已影响15人  王怀智

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修饰变量
     */
//    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){

}

上一篇下一篇

猜你喜欢

热点阅读