无法继承 final class

Can not inherit from final class

我刚刚创建了我的第一个 android 库。在另一个应用程序中,我想从它扩展一个 class 。但它向我显示了一个错误:"Cannot extend from final 'library.com.kukaintro.activities.KukaIntro'".

如您所见,超级 class 中的 none 是最终的。如果我点击超级 class KukaIntro(在应用程序而不是图书馆),它会说:

这是我第一次创建图书馆。有人可以告诉我如何解决这个问题吗?

使用开放注解,阅读这里的文档。 https://kotlinlang.org/docs/reference/classes.html

在 Kotlin 中,与 Java 不同,默认情况下所有 classes 都被隐式标记为 final。如果要从 class 继承,则必须在 class 声明之前显式添加 open 关键字。

open class Base(p: Int) {

}

如果你想覆盖超级 class 中的任何函数,你必须再次将 open 关键字添加到超级 class 和 override 关键字对于子 class.

中的覆盖函数是必需的

文档中的示例:

open class Foo {
    open fun f() { println("Foo.f()") }
    open val x: Int get() = 1
}

class Bar : Foo() {
    override fun f() { 
        super.f()
        println("Bar.f()") 
    }

    override val x: Int get() = super.x + 1
}

Kotlin 文档:https://kotlinlang.org/docs/reference/classes.html#inheritance

这里是关于这个语言设计的讨论:https://discuss.kotlinlang.org/t/classes-final-by-default/166