2
A
回答
7
最終是類改性劑,其防止它被遺傳或被重寫。從蘋果公司的文件
您可以將其標記爲最終預防方法,屬性,或者被覆蓋 標。通過該方法,屬性或標的介紹人關鍵字之前寫final修飾符 做到這一點(例如 作爲最終無功,最終FUNC,最後一類FUNC,和最後的下標)。
任何試圖重寫 子類中的最終方法,屬性或下標都會報告爲編譯時錯誤。要添加到一類的擴展方法,屬性,或 標也可以被標記 作爲擴展的定義範圍內的決賽。
您可以通過在其類定義(final類)class關鍵字前寫的最後修改 標誌着整個類爲final。任何 嘗試子類的最終類報告爲編譯時錯誤。
3
最終意味着沒有人能夠繼承這個類。
11
當你知道一個聲明不需要重寫 時使用final。最後關鍵字上的類,方法,或 屬性指示該聲明不能被覆蓋的限制。 這允許編譯器安全地避免動態分配間接。
瞭解更多:
0
除了final
聲明不也需要被重寫具有比沒有用final
更好的性能,因爲在運行時final
禁用動態傳遞,其中保存運行時開銷。標有final
3
類不能被重寫。
爲什麼要關心類是否可以被覆蓋?
,需要考慮兩件事情:
- 作爲一個API設計/開發人員,你可能在你的框架類,可以被濫用或子類時,誤用。
final
可以防止課程被分類 - 任務完成。您還可以使用final
來標記非最終類的方法,屬性,甚至下標。這會產生同樣的影響,但對於班級的特定部分。 - 標記類爲
final
也告訴Swift編譯器該方法應直接調用(靜態調度),而不是從方法表(動態調度)查找函數。這可以減少函數調用開銷併爲您提供額外的性能。你可以在Swift開發者博客上read more on this。
相關問題
- 1. class alv和function alv有什麼區別
- 2. .class和.dex文件有什麼區別?
- 3. Class Path和Build Path有什麼區別
- 4. iPhone SDK:#import和@class有什麼區別?
- 5. `String.class`和`new Class [] {String.class}`有什麼區別?
- 6. h1.class和h1(空格)之間有什麼區別.class
- 7. Class clazz和Class <?> clazz在java中有什麼區別?
- 8. Perl中的新Some :: Class和Some :: Class-> new()有什麼區別?
- 9. C#中「Class」和「Private Class」聲明有什麼區別?
- 10. 在R中,class ts和class timeSeries之間有什麼區別?
- 11. * .class和.class之間的gitignore區別
- 12. IE9 final和IE9 RC有什麼區別?
- 13. jQuery中的class和id有什麼區別?
- 14. class_eval和class << className有什麼區別?
- 15. 設置關係時,User :: class和App \ User有什麼區別?
- 16. 'class'和'type'的概念有什麼區別?
- 17. 「.class元素」和「element.class」之間有什麼區別?
- 18. 在DBIx :: Class中填充和創建方法有什麼區別?
- 19. 添加promise時,使用「ifvarclass =>'class'」還是「class ::」notation有什麼區別?
- 20. 爲什麼「[self class] == [super class]」?
- 21. .class和#id:什麼區別/何時使用?
- 22. Class API中getDeclaredConstructors和getConstructors之間的區別是什麼?
- 23. class =「」做什麼?
- 24. Class是什麼?
- 25. DBIx :: Class和DBIx :: Abstract之間的區別?
- 26. 是什麼@class和#進口
- 27. 在ZeroMQ中使用ipc:///和ipc:// transport-class說明符有什麼區別?
- 28. 「class <T> where T:IList」和「IList」類型的字段有什麼區別?
- 29. class class [B在Java中代表什麼?
- 30. 「Class POCO」是什麼?
'A'不能擴展https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Inheritance.html –
@埃克托您的意思是繼承;擴展在Swift中是完全不同的東西。 – Hamish
是的,沒錯。抱歉 –