Swift 面试题
目录

Swift 中 super 关键字的作用是什么?

· 约 3 分钟读完 · 第 90 / 196 章

推荐答案

在 Swift 中,super 关键字用于在子类中调用父类的属性、方法或下标。它通常用于重写父类的方法或属性时,保留父类的实现,并在其基础上添加子类的特定行为。

本题详细解读

1. super 的基本用法

super 关键字主要用于以下场景:

  • 调用父类的初始化方法:在子类的初始化方法中,可以使用 super.init() 来调用父类的指定初始化方法。

  • 调用父类的方法:在子类中重写父类的方法时,可以使用 super.methodName() 来调用父类的实现。

  • 访问父类的属性:在子类中重写父类的属性时,可以使用 super.propertyName 来访问父类的属性。

2. super 的使用场景

  • 方法重写:当子类需要扩展或修改父类的方法时,通常会先调用 super.methodName() 来执行父类的逻辑,然后再添加子类的特定逻辑。

  • 初始化链:在子类的初始化方法中,必须确保父类的初始化方法被调用,以确保父类的属性被正确初始化。

  • 属性重写:在子类中重写父类的计算属性或观察属性时,可以使用 super.propertyName 来访问父类的属性值。

3. 注意事项

  • 初始化顺序:在子类的初始化方法中,必须先初始化子类的所有存储属性,然后才能调用 super.init()。

  • 避免循环调用:在使用 super 时,要确保不会导致无限递归调用,尤其是在重写方法时。

  • 访问控制:super 只能访问父类中具有适当访问控制级别的成员(如 public、internal 或 open)。