我认为var可以像val唯一的 getter 一样被重写,因为它既有 getter 又有 setter。但这是不可能的。
并且,如果val用具有 setter 的方法覆盖只有 getter 的方法var,则不会发生错误。我不知道这怎么可能。
为什么会这样?
您的第二个示例(使用 覆盖val)var类似于此伪代码:
open class Test {
fun getA()
}
class Main : Test() {
fun setA()
}
Run Code Online (Sandbox Code Playgroud)
Main子类只是添加了一个新方法,没有理由不可以。您的第一个示例(使用 覆盖var)val类似于:
open class Test {
fun getA()
fun setA()
}
class Main : Test() {
// remove setA() function
}
Run Code Online (Sandbox Code Playgroud)
您可能知道,不可能删除子类中的方法,因此不可能var使用val.
| 归档时间: |
|
| 查看次数: |
564 次 |
| 最近记录: |