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() {
}
}