Swift学习这十七:重载(override)

来源:互联网 发布:python time sleep作用 编辑:程序博客网 时间:2024/05/29 05:56

创建一个基类:Vehicle.swift

import Foundation//// @brief 定义一个超类(车)//class Vehicle {    var numberOfWheels: Int    var maxPassengers: Int        // designated initializer    init() {        numberOfWheels = 0        maxPassengers = 2        println("call vehicle designated initializer")        self.nothingToDo()    }        func description() {        println("Vehicle has (\numberOfWheels) wheels and can hold \(maxPassengers) passengers at most")    }        // 使用@final防止被重写    @final func nothingToDo() {        println("call nothingToDo() and it is used @final to avoid overriding")    }}

再创建一个子类Bicycle.swift:

import Foundation//// @brief 定义自行车类//class Bicycle : Vehicle {    // override property    override var numberOfWheels: Int {        get { // 重写属性,调用super.propertyName            println("overried property getter numberOfWheels")            return super.numberOfWheels        }        set {            println("overried property setter numberOfWheels")            super.numberOfWheels = max(newValue, 40)        }    }        // initializer 默认是不会被继承的    init() {        super.init() // initialize super class first        println("called designated initializer")        numberOfWheels = 2    }        // 重写方法    override func description() {       super.description()                println("func description() was called in Bicycle")    }    //    // 不能重写//    override func nothingToDo() {//        //    }}


在main.swift中测试:

import Foundationlet bicycle = Bicycle()bicycle.numberOfWheels = 4println(bicycle.numberOfWheels)bicycle.maxPassengers = 84println(bicycle.maxPassengers)bicycle.description()

// 测试结果数据:

call vehicle designated initializercall nothingToDo() and it is used @final to avoid overridingcalled designated initializeroverried property setter numberOfWheelsoverried property setter numberOfWheelsoverried property getter numberOfWheels4084Vehicle has (umberOfWheels) wheels and can hold 84 passengers at mostfunc description() was called in BicycleProgram ended with exit code: 0



0 0
原创粉丝点击