我正在寻找一种方法来覆盖子类中的基类扩展方法。据我所知,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
答案 0 :(得分:3)
将create
的声明移到实际的类声明中。其他一切都可以保持不变:
protocol Creator {
func create()
}
class BaseClass {
func create() {
print("create")
}
}
extension BaseClass: Creator {
}
// and so on
效果完全相同,但现在override func create()
在您的子类中是合法的。