class Vehicle {
var use: String
var speed: Int
var producer: String
var usedYear: Int
var basicInfo: String {
return "use:\(use),speed:\(speed),producer:\(producer)"
}
func description(){
print("Vehicle's description is:")
print(basicInfo)
}
init() {
use = "No use"
speed = 0
producer = "No producer"
usedYear = 0
}
init(use: String, speed: Int, producer: String, usedYear: Int) {
self.use = use
self.speed = speed
self.producer = producer
self.usedYear = usedYear
}
}
let train = Vehicle(use: "Common", speed: 60, producer: "CRRC", usedYear: 3)
print(train.description())
class Car: Vehicle {
var owner: String
var license: String
func propertyTransfer(newOwner: String){
owner = newOwner
print("The new owner is \(owner)")
}
override func description() {
print("Car's description is:")
print("use:\(use),speed:\(speed),producer:\(producer),usedYear:\(usedYear),owner:\(owner),license:\(license)")
}
override var basicInfo: String {
return super.basicInfo + " owner:\(owner),license:\(license)"
}
override var usedYear: Int {
didSet {
print("Used Year was changed from \(oldValue) to \(usedYear)")
}
willSet {
print("Used Year will be changed to \(newValue)")
}
}
override init() {
owner = "No owner"
license = "No license"
super.init()
}
init(use: String, speed: Int, producer: String, usedYear: Int, owner: String, license: String) {
self.owner = owner
self.license = license
super.init(use: use, speed: speed, producer: producer, usedYear: usedYear)
}
convenience init(car: Car) {
self.init(use: car.use, speed: car.speed, producer: car.producer, usedYear: car.usedYear, owner: car.owner, license: car.license)
}
}
let myCar = Car(use: "Personal", speed: 120, producer: "Tesla", usedYear: 6, owner: "Tommy", license: "BJ0515G")
myCar.owner = "Jim"
let hisCar = Car(car: myCar)