首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

Swift 2開發指南學習筆記(Day 47):final關鍵字——鎖定繼承與重寫的最終防線

     編輯:關於C

final是Swift中限制繼承與重寫的關鍵字,可修飾類、屬性、方法、下標。
• final class → 不可被繼承
• final var/func/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 }
}

class Student: Person {  // 編譯錯誤:Inheritance from a final class 'Person'
    var school: String
    override func description() -> String { ... }  // 錯誤:Instance method overrides a 'final' instance method
    override class func printClass() { ... }       // 錯誤:Class method overrides a 'final' class method
    override var age: Int { ... }                  // 錯誤:Var overrides a 'final' var
}

編譯錯誤類型對照

final修飾目標違規操作編譯錯誤信息
類繼承Inheritance from a final class
屬性重寫Var overrides a 'final' var
實例方法重寫Instance method overrides a 'final' instance method
類方法重寫Class method overrides a 'final' class method

實戰價值

  • API設計:框架開發中鎖定核心類行為,防止濫用繼承破壞不變量
  • 商業軟件:保護核心邏輯不被隨意擴展修改
  • 性能優化:編譯器可對final實體進行靜態分發、內聯優化,消除動態派發開銷
  • 語義明確:向使用者傳達「此處不應擴展」的設計意圖

最佳實踐

「默認給類、關鍵方法加final,只有確需擴展時再移除。」—— 這是Protocol-Oriented Programming時代的防禦性設計原則。

合理使用final,讓代碼結構更清晰、運行更高效、意圖更明確。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved