override(重载)

创建一个基类: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 Foundation
 
let bicycle = Bicycle()
 
bicycle.numberOfWheels = 4
println(bicycle.numberOfWheels)
bicycle.maxPassengers = 84
println(bicycle.maxPassengers)
bicycle.description()

//测试结果数据

call vehicle designated initializer
call nothingToDo() and it is used @final to avoid overriding
called designated initializer
overried property setter numberOfWheels
overried property setter numberOfWheels
overried property getter numberOfWheels
40
84
Vehicle has (
umberOfWheels) wheels and can hold 84 passengers at most
func description() was called in Bicycle
Program ended with exit code: 0


你可能感兴趣的:(override(重载))