Swift 中如何让子类必须重写父类方法
如何让子类必须实现父类中的方法呢?
有一种方法是结合 protocol(BaseMustMethod) 和 父类(BaseTableViewController) 来实现。
首先先实现一个 父类(BaseTableViewController),然后 写一个 protocol(BaseMustMethod) ,把子类必须写的方法放入到 protocol(BaseMustMethod) 中。
然后 typealias 一个 类型(BaseTableViewCtr) 同时遵守 父类(BaseTableViewController) 和 protocol(BaseMustMethod)。
这样 遵守 BaseTableViewCtr 的类,就同时继承了 父类(BaseTableViewController),还必须实现 protocol(BaseMustMethod) 规定的方法。
如下:
父类
protocol BaseMustMethod {
func loadNewDate()
}
typealias BaseTableViewCtr = BaseTableViewController & BaseMustMethod
class BaseTableViewController: BaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
guard let ctr = self as? BaseTableViewCtr else {
return;
}
ctr.loadNewDate()
}
}
子类
class TestBase1ViewController: BaseTableViewCtr {
}
extension TestBase1ViewController {
func loadNewDate() {
}
}