在 Swift 中,继承是一种面向对象编程的重要概念,它允许一个类继承另一个类的特性,包括属性和方法。在 Swift 中,类可以继承自其他类,并且可以重写父类的属性和方法,以及添加新的属性和方法。以下是关于 Swift 继承的一些基本操作:

1. 基类和子类
   // 定义一个基类
   class Animal {
       var name: String

       init(name: String) {
           self.name = name
       }

       func makeSound() {
           print("Some generic sound")
       }
   }

   // 定义一个子类,继承自基类
   class Dog: Animal {
       func bark() {
           print("Woof! Woof!")
       }

       // 重写父类的方法
       override func makeSound() {
           print("Bark! Bark!")
       }
   }

2. 创建子类实例
   // 创建基类实例
   let animal = Animal(name: "Generic Animal")

   // 创建子类实例
   let dog = Dog(name: "Buddy")

3. 调用父类方法
   // 调用父类方法
   animal.makeSound() // 输出 "Some generic sound"
   dog.makeSound()    // 输出 "Bark! Bark!"

4. 调用子类特有方法
   // 调用子类特有方法
   dog.bark() // 输出 "Woof! Woof!"

5. 重写属性和方法
   class Cat: Animal {
       var isLazy: Bool

       init(name: String, isLazy: Bool) {
           self.isLazy = isLazy
           super.init(name: name)
       }

       // 重写父类的属性
       override var name: String {
           didSet {
               print("Cat's name is set to \(name)")
           }
       }

       // 重写父类的方法
       override func makeSound() {
           print("Meow! Meow!")
       }
   }

   let cat = Cat(name: "Whiskers", isLazy: true)
   cat.name = "Fluffy" // 输出 "Cat's name is set to Fluffy"
   cat.makeSound()     // 输出 "Meow! Meow!"

6. 调用父类的初始化器
   class Bird: Animal {
       var canFly: Bool

       init(name: String, canFly: Bool) {
           self.canFly = canFly
           super.init(name: name)
       }
   }

   let bird = Bird(name: "Eagle", canFly: true)

7. 防止重写

   使用 final 关键字可以防止类的属性、方法或整个类被重写。
   final class FinalClass {
       // ...
   }

   class Subclass: FinalClass {} // 编译错误,无法继承 final 类

这些是一些基本的继承操作。继承使得代码可以更加模块化和可复用,子类可以共享父类的代码并添加或修改其行为。


转载请注明出处:http://www.pingtaimeng.com/article/detail/6854/Swift