《從零開始學Swift》學習筆記(Day 47)——final關鍵字
原創文章,歡迎轉載。轉載請註明:關東昇的部落格
在類的定義中使用final關鍵字宣告類、屬性、方法和下標。final宣告的類不能被繼承,final宣告的屬性、方法和下標不能被重寫。
下面看一個示例:
final class Person { //宣告為final,說明它是不能被繼承的
var name: String
final var age: Int //定義的age屬性
final func description() -> String { //定義description例項方法
return "\(name) 年齡是: \(age)"
}
final class func printClass() ->() { //定義printClass靜態方法
print( "Person 列印...")
}
init (name: String, age: Int) {
self.name = name
self.age = age
}
}
class Student: Person { //編譯錯誤
var school: String
convenience init() {
self.init(name: "Tony", age: 18, school: "清華大學")
}
init (name: String, age: Int, school: String) {
self.school = school
super.init(name: name, age: age)
}
override func description() -> String { //編譯錯誤 //試圖重寫description例項方法
print("父類列印 \(super.description())")
return "\(name) 年齡是: \(age), 所在學校: \(school)。"
}
override class func printClass() ->() { //編譯錯誤 //試圖重寫printClass靜態方法
print( "Student 列印...")
}
override var age: Int { //編譯錯誤 //試圖重寫age屬性
get {
return super.age
}
set {
super.age = newValue < 8 ? 8: newValue
}
}
}
定義Student類,並宣告為Person子類時,會報如下編譯錯誤:
Inheritance from a final class 'Person'
定義的age屬性也是final,那麼在試圖重寫age屬性時,會報如下編譯錯誤:
Var overrides a 'final' var
定義description例項方法,它被宣告為final,那麼在試圖重寫description例項方法時,會報如下編譯錯誤:
Instance method overrides a 'final' instance method
定義printClass靜態方法,它被宣告為final,那麼在試圖重寫printClass靜態方法時,會報如下編譯錯誤:
Class method overrides a 'final' class method
使用final可以控制我們的類被有限地繼承,特別是在開發一些商業軟體時,適當地新增final限制是非常有必要的。
歡迎關注關東昇新浪微博@tony_關東昇。 關注智捷課堂微信公共平臺,瞭解最新技術文章、圖書、教程資訊
更多精品iOS、Cocos、移動設計課程請關注智捷課堂官方網站:http://www.zhijieketang.com 智捷課堂論壇網站:http://51work6.com/forum.php
相關文章
- 《從零開始學Swift》學習筆記(Day 3)——Swift 2.0之後增加的關鍵字Swift筆記
- 《從零開始學Swift》學習筆記(Day 24)——列舉Swift筆記
- 《從零開始學Swift》學習筆記(Day 16)——字典集合Swift筆記
- 《從零開始學Swift》學習筆記(Day 59)——程式碼排版Swift筆記
- 《從零開始學Swift》學習筆記(Day 45)——重寫方法Swift筆記
- 《從零開始學Swift》學習筆記(Day 36)——靜態方法Swift筆記
- 《從零開始學Swift》學習筆記(Day 17)——Swift中陣列集合Swift筆記陣列
- 《從零開始學Swift》學習筆記(Day5)——我所知道的識別符號和關鍵字Swift筆記符號
- 《從零開始學Swift》學習筆記(Day 49)——擴充套件宣告Swift筆記套件
- 《從零開始學Swift》學習筆記(Day 44)——重寫屬性Swift筆記
- 《從零開始學Swift》學習筆記(Day 46)——下標重寫Swift筆記
- 《從零開始學Swift》學習筆記(Day 40)——解構函式Swift筆記函式
- 《從零開始學Swift》學習筆記(Day 41)——類的繼承Swift筆記繼承
- 《從零開始學Swift》學習筆記(Day 29)——訪問級別Swift筆記
- 《從零開始學Swift》學習筆記(Day 32)——計算屬性Swift筆記
- 《從零開始學Swift》學習筆記(Day 33)——屬性觀察者Swift筆記
- 《從零開始學Swift》學習筆記(Day 23)——尾隨閉包Swift筆記
- 《從零開始學Swift》學習筆記(Day 27)——可選型別Swift筆記型別
- 《從零開始學Swift》學習筆記(Day 10)——運算子是“ +、-、*、/ ”嗎?Swift筆記
- 《從零開始學Swift》學習筆記(Day54)——丟擲錯誤Swift筆記
- 《從零開始學Swift》學習筆記(Day 35)——會使用下標嗎?Swift筆記
- 《從零開始學Swift》學習筆記(Day 22)——閉包那些事兒!Swift筆記
- 《從零開始學Swift》學習筆記(Day 21)——函式返回值Swift筆記函式
- 《從零開始學Swift》學習筆記(Day 55)——使用try?和try!區別Swift筆記
- 《從零開始學Swift》學習筆記(Day 37)——預設建構函式Swift筆記函式
- 《從零開始學Swift》學習筆記(Day 39)——建構函式過載Swift筆記函式
- 《從零開始學Swift》學習筆記(Day 8)——小小常量、變數大作用Swift筆記變數
- 《從零開始學Swift》學習筆記(Day 12)——說幾個特殊運算子Swift筆記
- 《從零開始學Swift》學習筆記(Day 18)——有幾個分支語句?Swift筆記
- 《從零開始學Swift》學習筆記(Day 19)——函式引數傳遞Swift筆記函式
- 《從零開始學Swift》學習筆記(Day 9)——離開表示式你試試!Swift筆記
- 《從零開始學Swift》學習筆記(Day 56)—— Swift編碼規範之命名規範Swift筆記
- 《從零開始學Swift》學習筆記(Day 1)——我的第一行Swift程式碼Swift筆記
- 《從零開始學Swift》學習筆記(Day 51)——擴充套件建構函式Swift筆記套件函式
- 《從零開始學Swift》學習筆記(Day 52)——Cocoa錯誤處理模式Swift筆記模式
- 《從零開始學Swift》學習筆記(Day43)——建構函式繼承Swift筆記函式繼承
- 《從零開始學Swift》學習筆記(Day 25)——類和結構體定義Swift筆記結構體
- 《從零開始學Swift》學習筆記(Day 11)——資料型別那些事兒?Swift筆記資料型別