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


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,056评论 3 119
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 8,038评论 2 9
  • 通常多数人的理解是,公司估值达到10亿美元,就可以称为概领域内的独角兽公司。 也正是因为这个观点,困住了很多公司的...
    爱递遗主阅读 1,405评论 0 0
  • 同样都在一个组织中,但人和人是不一样的。 想象一个场景,公司大老板坐电梯,大家看到他礼貌的说,某总好。大老板面带微...
    三七海棠qxy007阅读 3,940评论 0 1
  • 本来打算写今天试用docker for mac beta时碰到的问题的,结果在设置账号信息的时候,碰到个问题,不算...
    jun1st阅读 1,783评论 0 0

友情链接更多精彩内容