Swift基础语法: 30 - Swift的基类, 子类, 重写, 重写方法, 重写属性, 防止重写
前面我們講了有關于腳本語法的基本認識以及使用, 現在讓我們來看看Swift的其他東西:
1.基類
所謂的基類, 就是OC中的父類, 不繼承任何類, 就叫做基類, 讓我們來看看例子:
class Vehicle {var currentSpeed = 0.0var description: String {return "traveling at \(currentSpeed) miles per hour"}func makeNoise() {} }let someVehicle = Vehicle() println("someVehicle: \(someVehicle.description)") // 打印出來的結果: someVehicle: traveling at 0.0 miles per hourPS: 這個類雖然是沒有什么意義, 但它的的確確是一個基類, 在Swift中, 如果你沒有在這個類名后面繼承與什么什么類, 那么就會自動的變成基類.
2.子類生成
所謂的子類, 其實和OC中的子類一樣的, 它是基于基類所新建的一個類, 這個類就叫做子類, 它擁有父類的所有特性, 同時它又可以有屬于自己的特性, 下面讓我們來看看例子:
class Bicycle: Vehicle {var hasBasket = false }let bicycle = Bicycle() bicycle.hasBasket = true bicycle.currentSpeed = 15 println("bicycle: \(bicycle.description)") // 打印出來的結果: bicycle: traveling at 15.0 miles per hourPS: 上面的例子就是Vehicle類的子類, 它繼承與Vehicle的所有特性, 可以調用Vehicle類里面的變量, 方法,等等, 同時它又有自己的屬性.
3.重寫方法
在子類中, 雖然擁有父類的所有特性, 但在實際開發中, 有一些特殊的情況, 父類的方法不能滿足于子類的需求, 但我們又不想去更改父類的方法, 那么我們可以選在在子類里去重寫父類的方法, 比如:
class Car: Vehicle {var gear = 1override var description: String {return super.description + " in gear \(gear)"} }let car = Car() car.currentSpeed = 25.0 car.gear = 3 println("Car: \(car.description)") // 打印出來的結果: Car: traveling at 25.0 miles per hour in gear 3PS: 沒錯, 有些眼睛犀利的朋友就看到了, 在Car這個子類里, 有一個方法名和父類的方法名是一樣的, 但在這個方法名前面, 加了一個override這個關鍵字, 這個就是Swift中的重寫關鍵字.
4.重寫屬性
在Swift中, 既然能重寫父類的方法, 那當然也是可以重寫父類的屬性了, 讓我們來看看例子:
class SpeedLimitedCar: Car {override var gear: Int {get {return super.gear}set {super.gear = 2}} } let limitedCar = SpeedLimitedCar() limitedCar.gear = 60println("SpeedLimitedCar: \(limitedCar.gear)") // 打印出來的結果: SpeedLimitedCar: 2PS: 這里需要注意一點的就是, 必須通過get和set這種特性的方式來重寫父類的屬性.
5.防止重寫
在上面的例子中, 如果我有某個類的屬性或者方法不想被重寫, 只要在基類定義的時候在前面加一個final關鍵字就可以防止被重寫, 下面讓我們來看看例子:
class Car: Vehicle {final var gear = 0final override var description: String {return super.description + " in gear \(gear)"} }class SpeedLimitedCar: Car {override var description: String {return "重寫了"}override var gear: Int {get {return super.gear}set {super.gear = 2}} } // 報錯: Var overrides a 'final' var好了, 這次我們就講到這里, 下次我們繼續~
轉載于:https://www.cnblogs.com/iOSCain/p/4529358.html
總結
以上是生活随笔為你收集整理的Swift基础语法: 30 - Swift的基类, 子类, 重写, 重写方法, 重写属性, 防止重写的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.单人报价和成本价❓四川 6日游 35
- 下一篇: vagrant使用centos的环境安装