原創文章,歡迎轉載。轉載請註明:關東昇的博客 php
Swift中的繼承只能發生在類上,不能發生在枚舉和結構體上。一個類能夠繼承另外一個類的方法、屬性、下標等特徵,當一個類繼承其餘類時,繼承類叫子類,被繼承類叫父類(或超類)。子類繼承父類後,能夠重寫父類的方法、屬性、下標等特徵。 java
爲了瞭解繼承性,看這樣一個場景:一位面向對象的程序員小趙,在編程過程當中須要描述和處理我的信息,因而他定義了類Person,以下所示:程序員
class Person { var name: String var age: Int func description() -> String { return "\(name) 年齡是: \(age)" } init () { name = "" age = 1 } }
一週之後,小趙又遇到了新的需求,須要描述和處理學生信息,因而他又定義了一個新的類Student,以下所示:編程
class Student { var name: String var age: Int var school: String func description() -> String { return "\(name) 年齡是: \(age)" } init() { school = "" name = "" age = 8 } }
不少人會認爲小趙的作法可以理解並相信這是可行的,可是問題在於Student和Person兩個類的結構太接近了,後者只比前者多了一個屬性school,卻要重複定義其餘全部的內容,實在讓人「不甘心」。Swift提供瞭解決相似問題的機制,那就是類的繼承,代碼以下所示:微信
class Student: Person { var school: String override init() { school = "" super.init() age = 8 } }
Student類繼承了Person類中的全部特徵,「:」以後的Person類是父類。Swift中的類能夠沒有父類,例如Person類,定義的時候後面沒有「:」,這種沒有父類的就是基類。ide
此外override init()是子類重寫父類構造函數。函數
通常狀況下,一個子類只能繼承一個父類,這稱爲單繼承,但有的狀況下一個子類能夠有多個不一樣的父類,這稱爲多重繼承。在Swift中,類的繼承只能是單繼承。多重繼承能夠經過聽從多個協議實現。也就是說,在Swift中,一個類只能繼承一個父類,可是能夠遵循多個協議。網站
歡迎關注關東昇新浪微博@tony_ 關東昇。
關注智捷課堂微信公共平臺,瞭解最新技術文章、圖書、教程信息
更多精品iOS、Cocos、移動設計課程請關注智捷課堂官方網站:http://www.zhijieketang.com
智捷課堂論壇網站:http://51work6.com/forum.phpspa