除了明显的原因,例如如果按照设计,我不希望某些方法、属性或任何内容在继承树中被覆盖,是否还有其他原因来标记事物final
在斯威夫特?
例如,是否有性能方面的考虑?我记得在某处读到过一些答案,其中提出了一些建议。
来自 Apple 的 Swift 博客:通过减少动态调度来提高性能
Swift 允许类覆盖其超类中声明的方法和属性。这意味着程序必须在运行时确定正在引用哪个方法或属性,然后执行间接调用或间接访问。这种技术称为动态调度,它提高了语言表达能力,但代价是每次间接使用都会产生恒定的运行时开销。
Using final
是通过消除这种动态来提高性能的几种方法之一:
“final”关键字是对类、方法或属性的限制,指示声明不能被覆盖。这允许编译器安全地消除动态调度间接。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)