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/