gpt4 book ai didi

java - 不能继承final类

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:32:52 27 4
gpt4 key购买 nike

我刚刚创建了我的第一个 android 库。在另一个应用程序中,我想从它扩展一个类。但它向我显示了一个错误:“无法从最终的‘library.com.kukaintro.activities.KukaIntro’扩展”。 enter image description here

enter image description here

如您所见,没有一个父类(super class)是最终的。如果我点击父类(super class) KukaIntro(在应用程序而不是图书馆),它会说: enter image description here

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

最佳答案

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

open class Base(p: Int) {

}

如果你想覆盖父类(super class)中的任何函数,你必须再次将open关键字添加到父类(super class)中的那些函数中,override关键字是对于子类中的重写函数是必需的。

文档中的示例:

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

关于java - 不能继承final类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45648361/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com