不能从最终的类继承
我刚刚创建了我的第一个android库。 在另一个应用程序中,我想从它扩展一个类。 但它显示了一个错误:“不能从最终的'library.com.kukaintro.activities.KukaIntro'”扩展。
正如你所看到的,没有一个超类是最终的。 如果我点击超级类KukaIntro(在应用程序不在图书馆)它说:
这是我第一次创造一个图书馆。 有人可以告诉我怎样才能解决这个问题?
在Kotlin中,与Java不同的是,所有的类默认都是隐式标记的。 如果要从类继承,则必须在类声明之前显式添加open
关键字。
open class Base(p: Int) { }
如果要覆盖超类中的任何函数,则还必须将open
关键字添加到超类中的这些函数中,并且override
关键字对于子类中的重写函数是强制的。
来自doc的示例:
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
使用打开的注释,在这里阅读文档。 https://kotlinlang.org/docs/reference/classes.html