在類別、屬性、方法、下標前加上 final,可分別禁止:
final class:類別不可被繼承final var/let:屬性不可被覆寫final func:實例/類別方法不可被覆寫final subscript:下標不可被覆寫final class Person {
var name: String
final var age: Int
final func description() -> String {
return "\(name) 年齡是: \(age)"
}
final class func printClass() {
print("Person 列印...")
}
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
// 編譯錯誤:Person 已標記 final,不可繼承
class Student: Person {
var school: String
// ... 以下皆會產生編譯錯誤 ...
override func description() -> String { ... }
override class func printClass() { ... }
override var age: Int { ... }
}
嘗試繼承 final class 或覆寫 final 成員時,編譯器將回報錯誤,確保類別設計意圖在編譯期即被強制執行。
最佳實務:當確定某類別或成員不應被修改時(如核心基礎類別、關鍵演算法實作),主動加上
final可提升程式碼安全性,並讓編譯器優化效能(靜態分派替代動態分派)。