Swift 2协议扩展未正确调用重写的方法

Swift 2协议扩展未正确调用重写的方法,第1张

Swift 2协议扩展未正确调用重写的方法

不幸的是,协议还没有这样的动态行为。

但是,您可以(在类的帮助下)通过

commonBehavior()
在中实现
ParentClass
并在中进行覆盖来做到这一点
ChildClass
。您还需要一个
CommonThing
或另一个类来遵循,
CommonTrait
然后才是的超类
ParentClass

class CommonThing: CommonTrait {    func say() -> String {        return "override this"    }}class ParentClass: CommonThing {    func commonBehavior() -> String {        // calling the protocol extension indirectly from the superclass        return (self as CommonThing).commonBehavior()    }    override func say() -> String {        // if called from ChildClass the overridden function gets called instead        return commonBehavior()    }}class AnotherParentClass: CommonThing {    override func say() -> String {        return commonBehavior()    }}class ChildClass: ParentClass {    override func say() -> String {        return super.say()    }    // explicitly override the function    override func commonBehavior() -> String {        return "from child class"    }}let parent = ParentClass()parentClass.say()          // "from protocol extension"let child = ChildClass()child.say()     // "from child class"

由于这只是您问题的一个简短解决方案,我希望它适合您的项目。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5622503.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存