Swift引用父类的super
Swift引用父类的super

Swift引用父类的super

super 是 Swift(和 Objective-C)中的一个关键字,用来引用父类(超类)中的实现。可以把它理解为“调用父类版本的方法、属性或构造器”的方式。

当子类中重写(override)了一个方法,但仍然希望保留父类的一部分行为,就可以通过 super 来调用父类原来的实现。

常见用法

1、调用父类的方法

class Animal {
    func makeSound() {
        print("Some generic animal sound")
    }
}

class Dog: Animal {
    override func makeSound() {
        super.makeSound()  // 调用父类方法
        print("Woof!")
    }
}

2、访问父类的属性

class Person {
    var name: String = "Unknown"
}

class Student: Person {
    override init() {
        super.init()
        print("Student name is \(super.name)") // 访问父类属性
    }
}

注意事项

super 只能在类中使用,结构体和枚举不支持继承,因此不能使用。

super 只能用于子类中,且前提是该方法、属性或构造器在父类中存在。

在 override 的方法中调用 super 是可选的,但在某些框架中(如 UIKit),必须调用 super(如 viewDidLoad())。

实际用例

例如,存在一个父类Animal类:

class Animal {
    func speak() {
        print("Animal makes a sound")
    }
}

子类Dog,使用override和super:

class Dog: Animal {
    override func speak() {
        super.speak() // 调用父类的 speak 方法
        print("Dog barks")
    }
}

SwiftUI视图:

class Animal {
    func speak() {
        print("Animal makes a sound")
    }
}

class Dog: Animal {
    override func speak() {
        super.speak()
        print("Dog eat Dog")
    }
}

struct ContentView: View {
    let dog = Dog()
    init() {
        dog.speak()
    }
    var body: some View { }
}

控制台输出:

Animal makes a sound
Dog barks

相关文章

Swift重写父类的override:https://fangjunyu.com/2025/05/18/swift%e9%87%8d%e5%86%99%e7%88%b6%e7%b1%bb%e7%9a%84override/

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注