📜  Swift继承(1)

📅  最后修改于: 2023-12-03 15:05:26.621000             🧑  作者: Mango

Swift继承

在面向对象编程中,继承是一种重要的概念。Swift也支持继承,通过继承我们可以构建出更加灵活和可复用的类和结构体。

基本概念

Swift中的继承和其他面向对象编程语言中的继承类似,分为子类和父类。子类可以继承父类的属性和方法,并且可以重写父类的方法。

父类和子类

在Swift中,类和结构体都支持继承。我们可以通过 class 关键字来定义一个类,通过 struct 关键字来定义一个结构体。

class Animal {
    // 父类
    var name: String = ""
    var age: Int = 0
    
    func info() {
        print("name is \(name), age is \(age)")
    }
}

class Dog: Animal {
    // 子类
    var breed: String = ""
    
    func bark() {
        print("Woof!")
    }
}

在上面的代码中,我们定义了一个父类 Animal 和一个子类 DogDog 继承了 Animal 的属性和方法,并且还定义了自己的属性和方法。

重写方法

在子类中,我们可以重写父类的方法来实现自己的逻辑。我们可以使用 override 关键字来标记一个方法是重写父类的方法。

class Animal {
    func makeSound() {
        print("...")
    }
}

class Dog: Animal {
    override func makeSound() {
        print("Woof!")
    }
}

let dog = Dog()
dog.makeSound() // 输出 "Woof!"

在上面的代码中,Dog 重写了 Animal 中的 makeSound 方法,并且输出了自己的声音。

调用父类方法

在子类中,我们可以使用 super 关键字来调用父类中的方法。通过 super 关键字,我们可以访问父类的属性和方法,从而实现子类的逻辑。

class Animal {
    var name: String = ""
}

class Dog: Animal {
    override var name: String {
        didSet {
            super.name = "🐶 " + name
        }
    }
}

let dog = Dog()
dog.name = "小黄"
print(dog.name) // 输出 "🐶 小黄"

在上面的代码中,Dog 重写了 Animal 中的 name 属性,并且在设置新的值后添加了一个表情符号和字符串。在重写过程中,我们使用了 super 关键字来访问父类的属性。

总结

继承是面向对象编程的重要概念之一,Swift也支持继承。在子类中,我们可以继承父类的属性和方法,并且可以重写父类的方法。通过继承和重写,我们可以构建出更加灵活和可复用的类和结构体。