执行以下操作的含义是什么:
protocol A { func f() } extension A { final f() {} }
我希望了解在这里的扩展中放置final与不放置final相比有什么作用。我知道final有什么作用,我希望了解实现/不实现f的类及其子类的重写行为。
final
f
d7v8vwbk1#
不能再将扩展函数标记为final。https://bugs.swift.org/browse/SR-1762
n3h0vuf22#
对于Swift 2.0:协议扩展在扩展中添加到类中的方法、属性或子脚本也可以在扩展的定义中标记为final。参考Inheritance的这个问题,final关键字不允许覆盖扩展中定义的(final)方法,当它被子类化时。对于Swift 1.2:这在扩展Extensions can add new functionality to a type, but they cannot override existing functionality的上下文中可能很有用在确定应用程序的架构时,需要在扩展的上下文中考虑以下几点:
2条答案
按热度按时间d7v8vwbk1#
不能再将扩展函数标记为final。
https://bugs.swift.org/browse/SR-1762
n3h0vuf22#
对于Swift 2.0:协议扩展
在扩展中添加到类中的方法、属性或子脚本也可以在扩展的定义中标记为final。
参考Inheritance的这个问题,final关键字不允许覆盖扩展中定义的(final)方法,当它被子类化时。
对于Swift 1.2:这在扩展Extensions can add new functionality to a type, but they cannot override existing functionality的上下文中可能很有用
在确定应用程序的架构时,需要在扩展的上下文中考虑以下几点:
关于final关键字,这是我的看法,它对扩展方法没有影响,因为与类(继承)相比。如果我错了,请纠正我。演示链接: