Kotlin 继承与实现
2019-01-07 本文已影响0人
512DIDIDI
在kotlin中,基类与接口涉及到两个关键字:open、abstract
本质上这两者都是用于表明 子类可以重写方法或继承
-
open可以有方法体,子类可以通过super关键字访问 -
abstract就如同java中的abstract一样,即当前类不用实现方法,交由子类实现:
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关键字修饰方法时,类必须也是abstract,open同理,如果两者都存在,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()
}