class Subclass : Superclass {
override func method() { /* ... */ }
}
let instance = Subclass()
instance.method() // I want to call Superclass.method() not Subclass.method()
鉴于这种情况,我如何调用Superclass.method()?
答案 0 :(得分:3)
你做不到。当您使用override
关键字时,您告诉编译器允许更改子类中的继承方法。这意味着子类实例将不了解覆盖超类方法的实现。
即使您将Subclass
实例投射到Superclass
,实例的实际类型仍为Subclass
,因此如果执行(instance as Superclass).method()
,它仍会执行覆盖方法。
如果您希望能够从Subclass
个实例调用超类实现,则需要为Subclass
创建另一个函数,而不是从{{1}覆盖method
}。