val-property 不能覆盖 var-property

Ji *_*bin 0 overriding kotlin

我认为var可以像val唯一的 getter 一样被重写,因为它既有 getter 又有 setter。但这是不可能的。

并且,如果val用具有 setter 的方法覆盖只有 getter 的方法var,则不会发生错误。我不知道这怎么可能。

为什么会这样?

bro*_*oot 6

您的第二个示例(使用 覆盖valvar类似于此伪代码:

open class Test {
    fun getA()
}

class Main : Test() {
    fun setA()
}
Run Code Online (Sandbox Code Playgroud)

Main子类只是添加了一个新方法,没有理由不可以。您的第一个示例(使用 覆盖varval类似于:

open class Test {
    fun getA()
    fun setA()
}

class Main : Test() {
    // remove setA() function
}
Run Code Online (Sandbox Code Playgroud)

您可能知道,不可能删除子类中的方法,因此不可能var使用val.