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() {// // }}
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
- Swift学习这十七:重载(override)
- Swift学习这十七:重载(override)
- Kotlin学习(十七): 运算符重载
- 初始化—Swift学习笔记(十七)
- swift学习-可选链(十七)
- swift学习之路(十七)协议
- Swift学习笔记(十七)协议
- Overload(重载)Override(重写)
- Swift基础(十七)UITextView
- [swift学习之十七]RunTime练习二
- 重载(OverLoaded)和重写(OverRide)
- 重载(Overload)与重写(Override)
- Overload(重载)和Override(重写)
- 重载(Overload)与重写(Override)
- overload(重载)与override(覆盖)
- overload(重载)与override(覆盖)
- Override和Overload(重写和重载)
- 重载(overload)和覆盖(override) 解析
- iOS中七种手势
- viewController 和 tableView 相关方法执行顺序及作用
- Matlab mser(最大极值稳定区域)
- UITableView学习笔记
- Boost::asio io_service 实现分析
- Swift学习这十七:重载(override)
- 冒泡排序(Objective-C --- NSMutableArray类目版)
- 浅谈Java类与对象的概念区别
- 黑马程序员_人工线程池
- C++容器之Priority queue
- 谷歌眼镜与智能枪支搭配 或可改写未来战争方式
- Python的startswith和endswith
- codeforce 11 A
- freemarker 基本语法