《從零開始學(xué)Swift》學(xué)習(xí)筆記(Day 47)——final關(guān)鍵字

原創(chuàng)文章,歡迎轉(zhuǎn)載。轉(zhuǎn)載請注明:關(guān)東升的博客

在類的定義中使用final關(guān)鍵字聲明類、屬性、方法和下標。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靜態(tài)方法
??????? 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: "清華大學(xué)")
??? }???
??? 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), 所在學(xué)校: \(school)。"
??? }???
??? override class func printClass() ->() {????? //編譯錯誤?//試圖重寫printClass靜態(tài)方法
??????? 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靜態(tài)方法,它被聲明為final,那么在試圖重寫printClass靜態(tài)方法時,會報如下編譯錯誤:
Class method overrides a 'final' class method
使用final可以控制我們的類被有限地繼承,特別是在開發(fā)一些商業(yè)軟件時,適當?shù)靥砑觙inal限制是非常有必要的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容