var 默认是 public final 但可以重新初始化

Mou*_*ier 2 kotlin

我是新来学习 KOTLIN 的,我发现public final默认情况下有类和变量。

但我很惊讶最终变量值如何改变?

public final var x = 4

x = 5
Run Code Online (Sandbox Code Playgroud)

有人可以帮我澄清一下吗?

Paw*_*wel 6

final关键字严格用于继承

如果您想要不可变的属性,请使用val而不是var.

默认情况下,一切都是如此final,因此无法继承或覆盖。如果您不希望某些东西成为final您必须将其明确标记为open

open class Foo {
    var x = 5
}

class Foo2 : Foo() {
    override var x = 7  // error : 'x' in 'Foo' is final and cannot be overridden
}

open class Bar {
    open var x = 5
}

class Bar2 : Bar() {
    override var x = 8  // ok
}

open class Bar3 : Bar() {
    final override var x = 9  // ok, final prevents further overrides
}

class Bar3Child : Bar3() {
    override var x = 10  // error : 'x' in 'Bar3' is final and cannot be overridden
}
Run Code Online (Sandbox Code Playgroud)