如何调用超级方法?

时间:2018-06-06 14:38:21

标签: swift inheritance override

class Subclass : Superclass {
    override func method() { /* ... */ }
}

let instance = Subclass()
instance.method() // I want to call Superclass.method() not Subclass.method()

鉴于这种情况,我如何调用Superclass.method()?

1 个答案:

答案 0 :(得分:3)

你做不到。当您使用override关键字时,您告诉编译器允许更改子类中的继承方法。这意味着子类实例将不了解覆盖超类方法的实现。

即使您将Subclass实例投射到Superclass,实例的实际类型仍为Subclass,因此如果执行(instance as Superclass).method(),它仍会执行覆盖方法。

如果您希望能够从Subclass个实例调用超类实现,则需要为Subclass创建另一个函数,而不是从{{1}覆盖method }。