62

我创建了一个 Kotlin 活动,但我无法扩展该活动。我收到这条消息:This type is final, so it cannot be inherited from。如何final从 Kotlin 的活动中删除,以便可以扩展?

4

3 回答 3

78

根据 Kotlin 文档,类上的开放注释与 Java 的最终注释相反。它允许其他人从这个类继承。默认情况下,Kotlin 中的所有类都是 final 的。

open class Base {
    open fun v() {}
    fun nv() {}
}

class Derived() : Base() {
    override fun v() {}
}

参考:https ://kotlinlang.org/docs/reference/classes.html

于 2017-08-16T11:40:33.063 回答
22

在 Kotlin 中,默认情况下类是最终的,这就是类不可扩展的原因。

类上的 open 注解与 Java 的 final 相反:它允许其他人从这个类继承。默认情况下,Kotlin 中的所有类都是 final 的。 Kotlin - 继承

open class Base(p: Int)

class Derived(p: Int) : Base(p)
于 2018-04-17T07:32:24.510 回答
22

默认情况下,Kotlin 活动是最终的,因此我们不能扩展该类。为了克服这个问题,我们必须使活动open可以扩展。

就像open class BaseCompatActivity : AppCompatActivity() { }

于 2017-07-20T08:32:59.943 回答