📅  最后修改于: 2023-12-03 15:05:26.621000             🧑  作者: Mango
在面向对象编程中,继承是一种重要的概念。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
和一个子类 Dog
。Dog
继承了 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也支持继承。在子类中,我们可以继承父类的属性和方法,并且可以重写父类的方法。通过继承和重写,我们可以构建出更加灵活和可复用的类和结构体。