在 swift 中,如果我将 属性 标记为 final 会怎样

In swift, what if I mark a property as final

我知道如果一个函数被标记为final,那么它就不能在subclass中被覆盖。但是,如果 class 中的 属性 被标记为 final 怎么办?我试了一下,发现可以在subclass.

中赋新值

Final on a 属性 表示子类不能修改 属性 的赋值逻辑。这并不意味着 属性 值是不可变的。

如果没有 final,将允许这样的事情:

class X {
    var x: Int
}

class Y: X {
    override var x: Int {
        get { ... }
        set { ... }
    }
}

作为对 zneaks 正确答案的补充,在 Swift 中你可以声明一个 属性 用 let 而不是 var... 所以如果你说

let myConstantProperty: String = "Peter"

没有人能够更改它...但这只是在您需要这样的功能时...