0Pricing
Swift Academy · 课时

类继承与 super 关键字

学习子类化、调用 super.init() 以及扩展超类行为。

类继承与 super 关键字 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 4 节课。

欢迎

类支持继承——子类可以扩展或专门化超类。这使代码复用和多态成为可能,也是面向对象设计的核心支柱。

定义子类

```swift class Animal { var name: String init(name: String) { self.name = name } func speak() { print("...") } } class Dog: Animal { func fetch() { print("\(name) fetches!") } } let d = Dog(name: "Rex") d.speak() // "..." d.fetch() // "Rex fetches!" ```

`super.init()`——必需调用

```swift class Vehicle { var speed: Double init(speed: Double) { self.speed = speed } } class Car: Vehicle { var brand: String init(brand: String, speed: Double) { self.brand = brand super.init(speed: speed) // must call super } } ```

两阶段初始化

Swift 的两阶段初始化规则: 1. 在调用 `super.init()` 之前,必须先设置所有*自有*存储属性 2. 调用 `super.init()` 后,您可以自定义继承的属性 这样可以防止使用尚未初始化的内存。

调用超类方法

```swift class Shape { func draw() { print("Drawing shape") } } class Circle: Shape { override func draw() { super.draw() // call parent implementation print("Drawing circle") } } ```

继承属性

子类会继承所有超类属性: ```swift class Person { var name: String = "" var age: Int = 0 } class Employee: Person { var company: String = "" } let e = Employee() e.name = "Alice" e.company = "Acme" ```

指定初始化器与便利初始化器

• *指定初始化器*——完整初始化所有属性;调用 `super.init()` • *便利初始化器*——通过 `self.init()` 委托给另一个初始化器 ```swift convenience init(name: String) { self.init(name: name, age: 0) // delegates to designated } ```

必需初始化器

将初始化器标记为 `required`,可强制所有子类实现它: ```swift class Base { required init(id: Int) { ... } } class Sub: Base { required init(id: Int) { super.init(id: id) } } ``` 当工厂方法需要通过协议创建实例时,这种方式很常见。

类层次结构与类型

```swift let a: Animal = Dog(name:"Buddy") print(a is Dog) // true print(a is Animal) // true ``` Dog 属于 Animal 类型——子类实例满足超类的类型要求。

单继承

Swift 类只支持*单继承*(一个超类)。但一个类可以遵循多个协议: ```swift class MyVC: UIViewController, UITableViewDelegate, UITableViewDataSource { } ``` 协议是 Swift 实现多重行为继承的机制。

快速检查

在子类的指定初始化器中,什么时候必须调用 `super.init()`?

回顾

要点: • 使用 `class Sub: Super` 声明子类 • 设置自有属性后调用 `super.init()` • 两阶段初始化:先初始化自有属性,再初始化超类 • `super.method()` 调用父类实现 • Swift 采用单继承;使用协议实现多种行为 下一节:重写、禁止重写以及阻止继承。

常见问题解答

「类继承与 super 关键字」课时是免费的吗?

是的 — 「类继承与 super 关键字」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 4 节课。

「类继承与 super 关键字」这节课中我会学到什么?

学习子类化、调用 super.init() 以及扩展超类行为。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Swift Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「类继承与 super 关键字」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Swift Academy 课中编写并运行代码吗?

能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 类继承与 super 关键字
  2. override、final 与禁止子类化
  3. 类型转换:is、as?、as! 与 as
  4. 反初始化器与内存生命周期
← 返回 Swift Academy