// 创建一个基础类
class Vehicle {
var currentSpeed = 0.0
var description :String {
return "Traveling at \(currentSpeed) miles per hour"
}
func makeNoise(){
print("eeee") //eeee
}
}
var vehicle = Vehicle()
print(vehicle.description) //Traveling at 0 miles per hour
//创建一个BiyCle 继承Vehicle
class Bicycle: Vehicle {
var hasBasket = false
}
let bicycle = Bicycle()
bicycle.currentSpeed = 10
print(bicycle.description) //Traveling at 10 miles per hour
//子类还可以被其他类继承
class Tandem: Bicycle {
var cunrrentNumberOfPassagers = 0
}
let tandem = Tandem()
tandem.currentSpeed = 100
tandem.cunrrentNumberOfPassagers = 10
tandem.description //Traveling at 100 miles per hour
class Train: Vehicle {
override func makeNoise() {
super.makeNoise() //eeee
print("choo choo") //choo choo
}
}
let train = Train()
train.makeNoise() //choo choo
class Car: Vehicle {
var gear = 1
final var 轮胎 = true //如果某个属性、方法、下标等不想被子类重写,可以在最前面加final关键字
override var description:String {
return super.description + "in gear \(gear)"
}
}
let car = Car()
car.currentSpeed = 1000
car.gear = 3
print(car.description) //Traveling at 1000 miles per hourin gear 3
class AutomaticCar: Car {
//override var 轮胎 = false 会出现错误: cannot override with a stored property '轮胎'
override var currentSpeed:Double {
didSet{
gear = Int(currentSpeed / 10.0) + 1
}
}
}
var automaticCar = AutomaticCar()
automaticCar.currentSpeed = 1000
print(automaticCar.gear) //101