是否可以为从 A类继承的所有类编写扩展名 使用这样的代码:
extension T where T: A {
override func someMethod() {}
}
编辑:
我的具体需求是在其子类中重写某个类A(不是协议的类!)的方法,并在所有子类中执行相同的实现(而无需定义另一个类 B 从类 A 继承,然后从 B 继承) 我认为扩展是使用通用类型 T 的一种好方法,它指定 T 是从 A 继承的,但是迅速不允许。有什么办法吗?
另一个编辑
类 A 是内置类,具有 someMethod()也是内置方法
答案 0 :(得分:1)
不幸的是,您不能以通用方式覆盖超类 HumanMother 中的方法……然而……我个人觉得这很烦人。类层次结构和扩展不能像这个很酷的例子那样在 swift 中很好地协同工作。
如果你想为所有子类定义一个方法(而不是覆盖),这将起作用:
首先定义一个协议:
protocol BigMamma {
func damnGirl()
}
然后为“HumanMother”类型的子类定义它。
extension BigMamma where Self: HumanMother {
func damnGirl() {
print("Yeah Boi")
}
}
答案 1 :(得分:0)
根据您的问题和评论,建议您执行以下操作:
当您继承并覆盖这样的特定方法时:
override func viewDidLoad() {
super.viewDidLoad()
// do stuff
}
然后,子类也使用此方法中实现的所有内容。如果现在在此类的子类中再次重写此方法,则super.viewDidLoad()
将调用子类的重写代码。
希望有帮助!