Swift学习这十七:重载(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



目录
相关文章
|
10月前
|
人工智能 物联网 API
LLM 大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战
LLM 大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战
LLM 大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战
|
Swift
(一)swift的基本学习
(一)swift的基本学习
195 0
|
开发工具 Swift iOS开发
Swift学习第二练——Swift项目时光电影
Swift学习第二练——Swift项目时光电影
176 0
Swift学习第二练——Swift项目时光电影
|
Swift 开发者 iOS开发
Swift学习第一练——用Swift实现的FlappyBird小游戏
Swift学习第一练——用Swift实现的FlappyBird小游戏
210 0
Swift学习第一练——用Swift实现的FlappyBird小游戏
|
JavaScript Java iOS开发
1.Swift学习之介绍
简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 Mac OS 和 iOS 应用程序 Apple WWDC 2014 横空出世 Swift 历史 2010 年 7 月,苹果开发者工具部门总监 Chris Lattner...
1200 0
|
Swift C语言
2.Swift学习之初探
Playground是什么? 从Xcode6开始出现(Swift开始出现) 翻译为:操场/游乐场 对于学习Swift基本语法非常方便 所见即所得(快速查看结果) 语法特性发生改变时,可以快速查看 Playground Swift最...
873 0
|
安全 Swift
3.Swift学习之常量&变量
什么是常量和变量 在Swift中规定:在定义一个标识符时必须明确说明该标识符是一个常量还是变量 使用let来定义常量,定义之后不可以修改 使用var来定义变量,定义之后可以修改 变量的基本使用 import UIKit let a : Int =...
1060 0
|
iOS开发
Swift学习第十三枪-使用Swift开发IOS中蓝牙4.0的开发流程
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.
1076 0
|
数据库 iOS开发 数据库管理
Swift学习第十二枪----移动数据库王者Realm入门教程
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/51636392 今天给大家带来的是堪称是一个可以替代SQLite,Core Data 的以及ORMlibraries的轻量级数据库—Realm移动端数据库。
974 0
|
JSON 数据格式 iOS开发
Swift学习第十枪-AFNetwoking3.0的封装
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/51588829 下面是我的新建的Swift学习交流群,欢迎大家一起来共同学习Swift。
845 0