在Kotlin中,val用于使变量/属性不可更改,那么final有什么用呢?据我所知,在java中final用于限制继承或使变量常量,但在kotlin中val正在做常量部分那么final在kotlin中会做什么?
而val和var用于区分只读和读/写变量和属性,open并final定义可重写性。
finalKotlin 中默认有方法,但您可以声明它们open以允许子类重写该方法。final发生这种情况时,子类可以选择通过在关键字之外添加关键字来防止进一步重写override:
open class Shape {
open fun draw() { /*...*/ }
}
open class Rectangle() : Shape() {
// subclasses of Rectangle can't override draw()
final override fun draw() { /*...*/ }
}
Run Code Online (Sandbox Code Playgroud)
请参阅https://kotlinlang.org/docs/inheritance.html#overriding-methods
定义和覆盖属性也是如此(请参阅文档中的下一部分):
open class Shape {
open val vertexCount: Int = 0 // if this is final, we can't override it
}
class Rectangle : Shape() {
override val vertexCount = 4
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1287 次 |
| 最近记录: |