为什么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 示例以获取更多信息。
我正在编写 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 示例以获取更多信息。