Swift重写扩展方法

时间:2018-02-14 01:30:55

标签: swift

我正在寻找一种方法来覆盖子类中的基类扩展方法。据我所知,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

1 个答案:

答案 0 :(得分:3)

create的声明移到实际的类声明中。其他一切都可以保持不变:

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

效果完全相同,但现在override func create()在您的子类中是合法的。