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
是的,没错。抱歉 –