swift - 如何调用 super 方法?

标签 swift inheritance overriding

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/

相关文章:

Java泛型参数和继承

C多级继承递归

c++ - 从多个头文件中的接口(interface)声明重写函数时如何避免重复代码?

c++ - 禁用覆盖警告 C++

ios - 复杂 View 中的 SwiftUI 字体缩放

C文件无法编译

ios - 如何在推送 View Controller SWIFT 之前预加载所有 tableView 单元

ios - RxSwift rx_text 双向绑定(bind)崩溃

c# - 从继承类获取特定方法

c++ - 为什么非 const 方法隐藏 const 重载?