class Subclass : Superclass {
override func method() { /* ... */ }
}
let instance = Subclass()
instance.method() // I want to call Superclass.method() not Subclass.method()
在这种情况下,我该如何调用 Superclass.method() ?
最佳答案
你不能。当您使用 override
关键字时,您告诉编译器允许更改子类中的继承方法。这意味着子类实例将不知道重写父类(super class)方法的实现。
即使您将 Subclass
实例转换为 Superclass
,该实例的实际类型仍将是 Subclass
,因此如果您这样做 (instance as Superclass).method()
它仍然会执行覆盖的方法。
如果您希望能够从您的 Subclass
实例调用父类(super class)实现,您需要为 Subclass
创建另一个函数而不是重写 方法
来自父类(super class)
。
关于swift - 如何调用 super 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50723133/