Swift - final关键字的介绍,以及使用场景
生活随笔
收集整理的這篇文章主要介紹了
Swift - final关键字的介绍,以及使用场景
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
final關鍵字在大多數的編程語言中都存在,表示不允許對其修飾的內容進行繼承或者重新操作。Swift中,final關鍵字可以在class、func和var前修飾。 通常大家都認為使用final可以更好地對代碼進行版本控制,發揮更佳的性能,同時使代碼更安全。下面對這些說法做個總結。
1,想通過使用final提升程序性能 - 效果有限 通常認為final能改成性能,因為編譯器能從final中獲取額外的信息,因此可以對類或者方法調用進行額外的優化處理。但這中優化對程序性能的提升極其有限。 所以如果抱著提升性能的想法,就算把所有不需要繼承的方法、類都加上final關鍵字,也沒多大作用。還不如花時間去優化下程序算法。
2,final正確的使用場景 - 權限控制 也就是說這個類或方法不希望被繼承和重寫,具體情況如下:
(1)類或者方法的功能確實已經完備了 這種通常是一些輔助性質的工具類或者方法,特別那種只包含類方法而沒有實例方法的類。比如MD5加密類這種,算法都十分固定,我們基本不會再繼承和重寫。
(2)避免子類繼承和修改造成危險 有些方法如果被子類繼承重寫會造成破壞性的后果,導致無法正常工作,則需要將其標為final加以保護。
(3)為了讓父類中某些代碼一定會執行 父類的方法如果想要其中一些關鍵代碼在繼承重寫后仍必須執行(比如狀態配置、認證等)。我們可以把父類的方法定義成final,同時將內部可以繼承的部分剝離出來,供子類繼承重寫。下面通過一段代碼演示:
1,想通過使用final提升程序性能 - 效果有限 通常認為final能改成性能,因為編譯器能從final中獲取額外的信息,因此可以對類或者方法調用進行額外的優化處理。但這中優化對程序性能的提升極其有限。 所以如果抱著提升性能的想法,就算把所有不需要繼承的方法、類都加上final關鍵字,也沒多大作用。還不如花時間去優化下程序算法。
2,final正確的使用場景 - 權限控制 也就是說這個類或方法不希望被繼承和重寫,具體情況如下:
(1)類或者方法的功能確實已經完備了 這種通常是一些輔助性質的工具類或者方法,特別那種只包含類方法而沒有實例方法的類。比如MD5加密類這種,算法都十分固定,我們基本不會再繼承和重寫。
(2)避免子類繼承和修改造成危險 有些方法如果被子類繼承重寫會造成破壞性的后果,導致無法正常工作,則需要將其標為final加以保護。
(3)為了讓父類中某些代碼一定會執行 父類的方法如果想要其中一些關鍵代碼在繼承重寫后仍必須執行(比如狀態配置、認證等)。我們可以把父類的方法定義成final,同時將內部可以繼承的部分剝離出來,供子類繼承重寫。下面通過一段代碼演示:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | class Parent { ????final func method1() { ????????//權限驗證(必須執行) ????????//..... ????????? ????????method2() ????????? ????????//下面是日志記錄(必須執行) ????????//.......... ????} ????? ????func method2(){ ????????//父類的實現 ????????//...... ????} } class Child : Parent { ????//只能重寫父類的method2方法,不能重寫method1方法 ????override func method2() { ????????//子類的實現 ????????//...... ????} } |
總結
以上是生活随笔為你收集整理的Swift - final关键字的介绍,以及使用场景的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python之与众不同
- 下一篇: 条款13:以对象管理资源