编辑代码

//20190401031杨小可
//构造器练习
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)