###定义一个基类
class Vehicle {
var numberOfWheels: Int
var maxPassengers: Int
func description() -> String {
return "\(numberOfWheels) wheels; up to \(maxPassengers) passengers"
}
init() {
numberOfWheels = 0
maxPassengers = 1
}
}
###子类生成
class Bicycle: Vehicle {
init() {
super.init()
numberOfWheels = 2
}
}
在 Swift 中,构造器默认是不继承的。
###重写
要重写某个特性,你需要在重写定义的前面加上 override 关键字。
-
重写方法
class Car: Vehicle { var speed: Double = 0.0 init() { super.init() maxPassengers = 5 numberOfWheels = 4 } override func description() -> String { return super.description() + "; " + "traveling at \(speed) mph" } }
-
重写属性
重写属性的 getter 和 setter
class SpeedLimitedCar: Car { override var speed: Double { get { return super.speed } set { super.speed = min(newValue, 40.0) } } }
重写属性观察器
class AutomaticCar: Car { var gear = 1 override var speed: Double { didSet { gear = Int(speed / 10.0) + 1 } } override func description() -> String { return super.description() + " in gear \(gear)" } }
###防止重写
在方法,属性或下标脚本标记为 final 来防止它们被重写,只需要在声明关键字前加上 @final 特性即可。
你也可以通过在关键字 class 前加上 @final 来将整个类标记为 final,这样的类是不可被继承的。