在 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"
没有人能够更改它...但这只是在您需要这样的功能时...
我知道如果一个函数被标记为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"
没有人能够更改它...但这只是在您需要这样的功能时...