Swift final 关键字的理解

2,183 阅读1分钟

final 的作用

final 关键字的作用:使用它修饰的变量、方法、类不可继承。

整个类不可继承,若有类想继承 Animal,则编译器会报错:

final class Animal {
    let name: String
    init(name: String) {
        self.name = name
    }
    
    func eat() { }
}

属性不可继承:

class Animal {
    final let name: String
    init(name: String) {
        self.name = name
    }
    
    func eat() { }
}

方法不可继承:

class Animal {
    let name: String
    init(name: String) {
        self.name = name
    }
    
    final func eat() { }
}

总结:但凡用 final 修饰的都不可继承,它可以修饰 属性、方法、类。

有何好处

使用 final 可以提高性能。使用 final 修饰可以避免系统的动态派发(Dynamic Dispatch)。关于 Dynamic Dispatch 的更多优化可以参见此处