我认为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 次 |
最近记录: |