iOS

Swift 中如何让子类必须重写父类方法

在不断填坑中前进。。

Posted by 三十一 on February 25, 2021

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