Kotlin 继承与实现

2019-01-07  本文已影响0人  512DIDIDI

在kotlin中,基类与接口涉及到两个关键字:openabstract
本质上这两者都是用于表明 子类可以重写方法或继承

abstract class A{
  open fun f(){
    println("A.f()")
  }
  abstract fun g()
}

子类重写时,override的方法默认是open,如果需要修改不可再覆盖 需加上final关键字:

abstract class B:A(){
  override fun f(){
    super.f()
    println("B.f()")
  }
  final override fun g(){
    println("B.g()")
  }
}

使用abstract关键字修饰方法时,类必须也是abstractopen同理,如果两者都存在,abstract即可

class C: B(){
  override fun f() {
    super.f()
    println("C.f()")
  }
}

fun main(){
  C().apply {
    this.f()
    this.g()
  }
}

最终结果是 A.f() B.f() C.f() B.g()
此外 kotlin中的接口方法,是可以有方法体实现的

interface i{
  fun f(){
    println("i.i()")
  }
  fun g()
}
上一篇 下一篇

猜你喜欢

热点阅读