final 是 Swift 中用于防止继承或重写的关键字。它可以用在类、方法、属性、下标上,起到“封闭”作用。
final用法
1、final class:不允许其他类继承这个类。
2、final func:子类不能重写这个方法。
3、final var/let:子类不能重写这个属性。
4、final subscript:子类不能重写这个下标。
示例说明
1、final class
final class Animal {
func speak() {
print("Animal sound")
}
}
// ❌ 报错:Cannot inherit from final class 'Animal'
// class Dog: Animal {}
2、final func
class Animal {
final func sleep() {
print("Sleeping")
}
}
class Dog: Animal {
// ❌ 报错:Overriding 'sleep' is not allowed
// override func sleep() { }
}
3、final var / let
class Animal {
final var name: String = "Unnamed"
}
class Dog: Animal {
// ❌ 报错:Cannot override with a stored property 'name'
// override var name: String = "Doggo"
}
使用场景
1、声明工具类、单例类不希望被继承。
2、防止子类误改写某些关键行为。
3、提高运行时性能:Swift 编译器对 final 成员可以做更多优化,因为它们不会被动态重写。