簡體   English   中英

快速覆蓋擴展方法

[英]Swift overriding extension method

我正在尋找一種方法來重寫子類中的基類擴展方法。 據我所知,swift不允許直接執行此操作。 此方法是協議方法。 有什么辦法可以做到這一點?

protocol Creator {
    func create()
}
class BaseClass {

}

extension BaseClass: Creator {

    func create() {
        print("create")
    }
}

class Subclass1: BaseClass {
    // override create method
    // add own implementation of create()
}

class Subclass2 : BaseClass {
    // override create method
    // add own implementation of create()
}

let subclass1 = Subclass1().create() // execute create from Subclass1
let subclass2 = Subclass2().create() // execute create from Subclass2

只需將create聲明移到實際的類聲明中即可。 其他一切都可以保持不變:

protocol Creator {
    func create()
}
class BaseClass {
    func create() {
        print("create")
    }
}
extension BaseClass: Creator {
}
// and so on

效果是完全一樣的,但是現在override func create()在您的子類中是合法的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM