基本继承
使用 class 关键字声明一个类,并使用 superclass 指定其父类:
class Vehicle {
var currentSpeed = 0.0
func makeNoise() {
// 通用的车辆噪音
}
}
class Car: Vehicle {
var gear = 1
// 重写父类方法
override func makeNoise() {
print("Beep! Beep!")
}
}
let myCar = Car()
myCar.makeNoise() // 输出 "Beep! Beep!"
方法的重写
子类可以重写从父类继承的实例方法、类方法、实例属性和下标脚本。使用 override 关键字标识重写。
class Train: Vehicle {
override func makeNoise() {
print("Choo Choo!")
}
}
let myTrain = Train()
myTrain.makeNoise() // 输出 "Choo Choo!"
初始化器的继承与重写
子类可以通过调用父类的初始化器来继承其属性,也可以重写初始化器以添加新的功能。
class Bicycle: Vehicle {
var hasBasket = false
init(hasBasket: Bool) {
super.init() // 调用父类的初始化器
self.hasBasket = hasBasket
}
}
let myBike = Bicycle(hasBasket: true)
print(myBike.currentSpeed) // 输出 0.0
print(myBike.hasBasket) // 输出 true
防止重写
可以使用 final 关键字来防止类、方法、属性或下标脚本被重写。
class FinalClass {
final var finalProperty: Int = 0
final func finalMethod() {
// 具体实现
}
}
class SubClass: FinalClass {
// 尝试重写 finalProperty 和 finalMethod 会导致编译错误
}
类型转换与类型检查
可以使用类型转换运算符 as 进行类型转换,也可以使用 is 运算符进行类型检查。
let vehicle: Vehicle = Car()
if let myCar = vehicle as? Car {
print("vehicle is a Car")
myCar.makeNoise() // 输出 "Beep! Beep!"
}
以上是一些关于 Swift 继承的基本用法。继承是一种强大的机制,允许创建和组织类的层次结构,提高代码的可维护性和复用性。
转载请注明出处:http://www.zyzy.cn/article/detail/14432/Swift