一個(gè)類可以繼承(inherit)另一個(gè)類的方法(methods)晌该,屬性(properties)和其它特性
類可以調(diào)用和訪問超類的方法蜗侈,屬性和下標(biāo)(subscripts)核蘸,并且可以重寫(override)這些方法鳍怨,屬性和下標(biāo)來優(yōu)化或修改它們的行為。
可以為類中繼承來的屬性添加屬性觀察器(property observers)
1 基類(base class)
class Vehicle {
var currentSpeed = 0.0
var description: String {
return "traveling at \(currentSpeed) miles per hour"
}
func makeNoise() {
// 什么也不做-因?yàn)檐囕v不一定會有噪音
}
}
let someVehicle = Vehicle()
2 子類生成(Subclassing)
class Bicycle: Vehicle {
var hasBasket = false
}
let bicycle = Bicycle()
bicycle.hasBasket = true
bicycle.currentSpeed = 15.0
print("Bicycle: \(bicycle.description)")
class Tandem: Bicycle {
var currentNumberOfPassengers = 0
}
3 重寫(Overriding)
任何缺少override
關(guān)鍵字的重寫都會在編譯時(shí)被診斷為錯誤蒿柳。
訪問超類的方法,屬性及下標(biāo)漩蟆。 super
class Train: Vehicle {
override func makeNoise() {
print("Choo Choo")
}
}
let train = Train()
train.makeNoise()
class Car: Vehicle {
var gear = 1
override var description: String {
return super.description + " in gear \(gear)"
}
}
class AutomaticCar: Car {
override var currentSpeed: Double {
didSet {
gear = Int(currentSpeed / 10.0) + 1
}
}
}
4 防止重寫 (final var
, final func
, final class func
, final subscript
)
playground文件在andyRon/LearnSwift