Kotlin Activity 无法扩展。该类型是最终类型,因此不能被继承

问题描述 投票:0回答:4

我创建了一个 Kotlin Activity,但无法扩展该 Activity。我收到这条消息:

This type is final, so it cannot be inherited from
。如何从 Kotlin 的 Activity 中删除
final
,以便扩展它?

kotlin kotlin-android-extensions
4个回答
89
投票

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

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

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

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


27
投票

默认情况下,Kotlin 活动是最终的,因此我们无法扩展该类。 为了克服这个问题,我们必须让活动

open
这样,它就可以扩展。

就像

open class BaseCompatActivity : AppCompatActivity() { }


25
投票

在 Kotlin 中,类默认是 Final 的,这就是类不可扩展的原因。

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

open class Base(p: Int)

class Derived(p: Int) : Base(p)

1
投票
class Base

简单添加 open 为超级/父类:

open class Base
© www.soinside.com 2019 - 2024. All rights reserved.