覆写方法
与被继承类的声明类似,可以被覆写的成员或方法也必须要使用open标记。
open class Base {
open fun v() {}
fun nv() {}
}
class Derived() : Base() {
override fun v() {}
}
override注解在Derived.v()中是必须的。如果未使用override,编译器将报错。如果没有使用open标记一个函数,比如Base.nv(),那么在子类当中定一个签名一样的方法将会出错。不管使不使用override关键字。在final类中,open修饰的成员是被禁止的。
一个被标记为override的方法本身是可以被修改的(open)。它可能被子类重写,如果你不想让其被重写,那么使用final。
open class AnotherDerived() : Base() {
final override fun v() {}
}