为什么kotlin脚本文件不能在同一个文件中继承class?

Why kotlin script file cannot have inherited class in the same file?

我正在编写 my.kts 脚本,并将其用于 运行 kotlin,我有这个:

class TestA {
    init {}
    open fun testOpen() {
        println(this)
    }
}
class TestB : TestA {
    override fun testOpen() {
        super.testOpen()
    }
}

编译失败,提示:

error: this type is final, so it cannot be inherited from
class TestB : TestA {
          ^
basic.kts:39:15: error: this type has a constructor, and thus must be     initialized here

class 测试 B : 测试 A {

如果您从另一个继承 class 并且基 class 具有主构造函数,则必须对其进行初始化。您的 TestA 具有默认的主构造函数,因此它应该如下所示:

class TestB : TestA() {
    override fun testOpen() {
        super.testOpen()
    }
}

另一个问题是 kotlin 中的 classes 默认是最终的,你应该明确定义它们可以扩展:

open class TestA

查看 this 示例以获取更多信息。