Swift - final關鍵字的介紹,以及使用場景
final關鍵字在大多數的程式語言中都存在,表示不允許對其修飾的內容進行繼承或者重新操作。Swift中,final關鍵字可以在class、func和var前修飾。
通常大家都認為使用final可以更好地對程式碼進行版本控制,發揮更佳的效能,同時使程式碼更安全。下面對這些說法做個總結。
1,想通過使用final提升程式效能 - 效果有限
通常認為final能改成效能,因為編譯器能從final中獲取額外的資訊,因此可以對類或者方法呼叫進行額外的優化處理。但這中優化對程式效能的提升極其有限。
所以如果抱著提升效能的想法,就算把所有不需要繼承的方法、類都加上final關鍵字,也沒多大作用。還不如花時間去優化下程式演算法。
2,final正確的使用場景 - 許可權控制
也就是說這個類或方法不希望被繼承和重寫,具體情況如下:
(1)類或者方法的功能確實已經完備了
這種通常是一些輔助性質的工具類或者方法,特別那種只包含類方法而沒有例項方法的類。比如MD5加密類這種,演算法都十分固定,我們基本不會再繼承和重寫。
(2)避免子類繼承和修改造成危險
有些方法如果被子類繼承重寫會造成破壞性的後果,導致無法正常工作,則需要將其標為final加以保護。
(3)為了讓父類中某些程式碼一定會執行
父類的方法如果想要其中一些關鍵程式碼在繼承重寫後仍必須執行(比如狀態配置、認證等)。我們可以把父類的方法定義成final,同時將內部可以繼承的部分剝離出來,供子類繼承重寫。下面通過一段程式碼演示:
class Parent {
final func method1() {
//許可權驗證(必須執行)
//.....
method2()
//下面是日誌記錄(必須執行)
//..........
}
func method2(){
//父類的實現
//......
}
}
class Child : Parent {
//只能重寫父類的method2方法,不能重寫method1方法
override func method2() {
//子類的實現
//......
}
}
相關文章
- final關鍵字
- final關鍵字和static關鍵字
- Java中final關鍵字如何使用?Java
- Java Final關鍵字Java
- Swift 關鍵字Swift
- RabbitMQ 簡介以及使用場景MQ
- final關鍵字深入解析
- Java中final關鍵字Java
- Java 關鍵字之 finalJava
- Redis - 介紹與使用場景Redis
- final關鍵字的作用(skycto JEEditor)
- java基礎-關鍵字finalJava
- Java併發--final關鍵字Java
- RabbitMQ 的應用場景以及基本原理介紹MQ
- RabbitMQ的應用場景以及基本原理介紹MQ
- java中的static和final關鍵字Java
- Hbase原理的介紹和使用場景分析
- C++ 的關鍵字(保留字)完整介紹C++
- 關於keras框架的介紹以及操作使用Keras框架
- Java基礎——final和static關鍵字Java
- final與static關鍵字的區別?(skycto JEEditor)
- java中方法的終結者(final關鍵字)Java
- 說說iOS中的常用的關鍵字static ,class(僅限Swift關鍵字)iOSSwift
- 關於Ajax和websocket的區別以及使用場景!Web
- Java 中 final 關鍵字有什麼用Java
- 數字沙盤的四大應用場景分析介紹
- 夯實Java基礎系列4:一文了解final關鍵字的特性、使用方法,以及實現原理Java
- Vue 關鍵概念介紹Vue
- 輪換代理介紹及適用場景介紹
- ThreadLocal概念以及使用場景thread
- Java面試題,深入理解final關鍵字Java面試題
- 許可權修飾符和final關鍵字
- 關於各種List型別特點以及使用的場景型別
- Java 的包, 許可權修飾符與final關鍵字Java
- 深入理解Swift中static和class關鍵字Swift
- 快速入門Redis呼叫Lua指令碼及使用場景介紹Redis指令碼
- 【Java基本功】一文讀懂final關鍵字的用法Java
- 多執行緒與高併發(五)final關鍵字執行緒
- 我去,你竟然還不會用 Java final 關鍵字Java