[英]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.