加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 不能从final类继承

发布时间:2020-12-15 02:01:04 所属栏目:Java 来源:网络整理
导读:我刚刚创建了我的第一个 android库.在另一个应用程序中,我想从它扩展一个类.但它显示了一个错误:“无法延伸到最终’library.com.kukaintro.activities.KukaIntro’”. 正如你所看到的,没有一个超级类是最终的.如果我点击超类KukaIntro(在应用程序而不是图书
我刚刚创建了我的第一个 android库.在另一个应用程序中,我想从它扩展一个类.但它显示了一个错误:“无法延伸到最终’library.com.kukaintro.activities.KukaIntro’”.

enter image description here

enter image description here

正如你所看到的,没有一个超级类是最终的.如果我点击超类KukaIntro(在应用程序而不是图书馆)它会说:

enter image description here

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

解决方法

在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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读