java – 不能从final类继承
发布时间:2020-12-15 02:01:04 所属栏目:Java 来源:网络整理
导读:我刚刚创建了我的第一个 android库.在另一个应用程序中,我想从它扩展一个类.但它显示了一个错误:“无法延伸到最终’library.com.kukaintro.activities.KukaIntro’”. 正如你所看到的,没有一个超级类是最终的.如果我点击超类KukaIntro(在应用程序而不是图书
我刚刚创建了我的第一个
android库.在另一个应用程序中,我想从它扩展一个类.但它显示了一个错误:“无法延伸到最终’library.com.kukaintro.activities.KukaIntro’”.
正如你所看到的,没有一个超级类是最终的.如果我点击超类KukaIntro(在应用程序而不是图书馆)它会说: 这是我第一次创建图书馆.有人可以告诉我如何才能解决这个问题? 解决方法
在Kotlin中,与Java不同,默认情况下,所有类都隐式标记为final.如果要从类继承,则必须在类声明之前显式添加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 docs:https://kotlinlang.org/docs/reference/classes.html#inheritance 以下是有关此语言设计的讨论:https://discuss.kotlinlang.org/t/classes-final-by-default/166 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |