class Vehicle {
var numberOfWheels: Int
var maxPassengers: Int
func description() -> String {
return "\(numberOfWheels) wheels; up to \(maxPassengers) passengers"
}
init() {
numberOfWheels = 1;
maxPassengers = 3;
}
}
class Bicycle: Vehicle {
init() {
super.init();
numberOfWheels = 2;
}
}
class Tandem: Bicycle {
init() {
super.init();
maxPassengers = 2;
}
}
//override func
class Car : Vehicle {
var speed : Double = 0.0;
init() {
super.init()
maxPassengers = 5
numberOfWheels = 4;
}
override func description() -> String {
return super.description() + ";" + "speed at \(speed) mph";
}
}
//override properties
class SpeedLimit : Car {
override var speed: Double {
get {
return super.speed
}
set {
super.speed = max(newValue, 40.0)
}
}
}
let limit = SpeedLimit();
limit.speed = 220.0
println("LimitSpeed:\(limit.description())")
//重写属性观察器
class AutomaticCar: Car {
var gear = 1;
override var speed: Double {
didSet {
gear = Int(speed/10) + 1
}
}
override func description() -> String {
return super.description() + " in gead at \(gear)";
}
}
let automaticCar = AutomaticCar()
automaticCar.speed = 50.0
println(automaticCar.description())