代码之家  ›  专栏  ›  技术社区  ›  CyberUser

无法从最终类继承

  •  7
  • CyberUser  · 技术社区  · 7 年前

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

    enter image description here

    enter image description here

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

    2 回复  |  直到 7 年前
        1
  •  37
  •   Bob    7 年前

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

    open class Base(p: Int) {
    
    }
    

    超类中那些函数的关键字,以及 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
    }
    

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

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