Swift開發(fā)標準教程-繼承_第1頁
Swift開發(fā)標準教程-繼承_第2頁
Swift開發(fā)標準教程-繼承_第3頁
Swift開發(fā)標準教程-繼承_第4頁
Swift開發(fā)標準教程-繼承_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

繼承8.1為什么要使用繼承8.2繼承的實現(xiàn)8.3繼承的特點8.4重寫8.5類型轉換8.6綜合案例8.7上機實踐8.1為什么要使用繼承8.1.1重用代碼、簡化代碼8.1.2擴展功能8.1.1重用代碼、簡化代碼當在一個程序中有多個類時,往往這些類擁有很多相同的屬性以及方法。維護這些代碼往往需要花費大量的時間。這個時候,就可以借鑒函數(shù)的思想,將這些屬性和方法提取出來放在一個類中。將這個類作為一個模板,這樣在使用的時候就可以直接使用了。不僅增強了代碼的重用率,還大大減少了代碼的編寫量和維護量。8.1.2擴展功能俗話說,長江后浪推前浪,一浪更比一浪高。這是現(xiàn)實社會發(fā)展的寫照。在編程中,也存在著這種現(xiàn)象。我們希望可以借助現(xiàn)有的代碼,擴展更多的功能。當我們想對一個類的功能進行擴展時,只需要集成原有的類,添加新的屬性和方法,就可以了。這樣就不會影響原有類的功能。8.2繼承的實現(xiàn)8.2.1繼承的定義8.2.2屬性的繼承8.2.3下標腳本的繼承8.2.4方法的繼承8.2.1繼承的定義繼承是使用“:”和一個類名來定義的,其語法形式如下:class子類名:父類名{

…}8.2.2屬性的繼承一個子類一旦繼承了父類,就說明在父類中聲明定義的屬性也被繼承了。這時,開發(fā)者可以在子類中使用父類的屬性。可以繼承的屬性包括存儲屬性、計算屬性和類型屬性。子類不僅可以繼承父類的屬性,還可以繼承在屬性中添加的屬性監(jiān)視器8.2.3下標腳本的繼承如果在父類中定義了下標腳本,子類在繼承父類之后,同樣繼承了父類中的下標腳本,即在子類中可以使用父類的下標腳本。8.2.4方法的繼承當子類繼承了父類時,如果在父類中定義了方法(實例方法和類型方法),那么子類在繼承父類的同時,也繼承了父類中的方法。8.3繼承的特點8.3.1多層繼承8.3.2不可刪除8.3.1多層繼承在Swift只支持單繼承,即一個類只能繼承自一個父類。但反過來,一個父類可以被多個子類繼承。子類還可以被其他類再次繼承。這樣就形成了多層繼承。8.3.2不可刪除在繼承中,子類從父類繼承來的成員只可以接受,不可以刪除。8.4重寫8.4.1重寫屬性8.4.2重寫下標腳本8.4.3重寫方法8.4.4訪問父類成員8.4.5阻止重寫8.4.1重寫屬性在類中的屬性分為了存儲屬性、計算屬性以及類型屬性,開發(fā)者可以對計算屬性以及類型屬性進行重寫。以下是對這兩種屬性重寫的詳細講解。1.重寫計算屬性對計算屬性進行重寫的語法形式如下:overridevar屬性名:數(shù)據類型{get{

…return某一屬性值}set{

…屬性值=某一個值

…}}2.重寫類型屬性對類型屬性進行重寫的語法形式如下:overrideclassvar屬性名:數(shù)據類型{…返回一個值}3.添加屬性監(jiān)視器開發(fā)者可以為繼承來的屬性添加屬性監(jiān)視器。這樣一來,當繼承來得屬性值發(fā)生改變時,開發(fā)者就會被通知到,其語法形式如下:overridevar屬性名:數(shù)據類型=初始值{willSet(參數(shù)名){

…}didSet{

}}8.4.2重寫下標腳本對子類繼承自父類的下標腳本進行重寫,其語法形式如下:overridesubscript(入參參數(shù)列表)->返回值的數(shù)據類型{

get{

//返回與入參匹配的類型的值

}

set(newValue){

//執(zhí)行賦值操作

}}8.4.3重寫方法開發(fā)者可以對繼承自父類的方法進行重寫,從而實現(xiàn)某一定制的方法。以下就對方法重寫的詳細講解。1.重寫實例方法實例方法重寫的語法形式如下:overridefunc方法名(參數(shù)列表)->返回值類型{

…}2.重寫類型方法對類型方法進行重寫的語法形式如下:overrideclassfunc方法名(參數(shù)列表)->返回值類型{

…}8.4.4訪問父類成員在子類中重寫了父類中的屬性、下標腳本和方法后,有時為了滿足某種需求,需要訪問父類中相對應的部分。此時就需要使用到關鍵字super。以下就是對父類中的屬性、下標腳本和方法進行訪問的語法形式:super.屬性名

//訪問父類的屬性super[下標]

//訪問父類的下標腳本super.方法名(參數(shù)值)

//訪問父類的方法8.4.5阻止重寫雖然在父類中的屬性、下標腳本以及方法可以在子類中重寫,但是在有的時候需要禁止對某一個屬性、下標腳本或者方法進行重寫。此時,就需要使用final關鍵字來禁止這些內容的重寫。1.阻止重寫屬性阻止重寫屬性可以分為阻止重寫計算屬性和阻止重寫類型屬性兩種。其中,阻止重寫計算屬性的語法形式如下:finalvar屬性名:數(shù)據類型{get{

…return某一屬性值}set(參數(shù)){…屬性值=某一個值

…}}阻止重寫類型屬性的語法形式如下:finalclassvar屬性名:數(shù)據類型{…返回一個值}2.阻止重寫下標腳本阻止重寫下標腳本的語法形式如下:finalsubscript(入參參數(shù)列表)->返回值的數(shù)據類型{

get{

//返回與入參匹配的類型的值

}

set(參數(shù)名稱){

//執(zhí)行賦值操作

}}3.阻止重寫方法阻止重寫方法可以分為阻止重寫實例方法和阻止重寫類型方法兩種。其中,阻止重寫實例方法的語法形式如下:finalfunc方法名(參數(shù)名1:數(shù)據類型,參數(shù)名2:數(shù)據類型…)->返回值類型

…}阻止重寫類型方法的語法形式如下:finalclassfunc方法名(參數(shù)名1:數(shù)據類型,參數(shù)名2:數(shù)據類型…)->返回值類型

…}當屬性、方法、下標腳本被禁止重寫后,是不允許再在子類中進行重寫的。否則就會出現(xiàn)錯誤。8.5類型轉換8.5.1類型檢查8.5.2向下轉型8.5.3AnyObject和Any的類型轉換8.5.1類型檢查類型檢查是一種檢查類實例的方式。它的實現(xiàn)需要使用到類型檢查操作符(is),該操作符用來檢查一個實例是否屬于特定子類型。若實例屬于那個子類型,類型檢查操作符返回true,否則返回false。8.5.2向下轉型某類型的一個常量或變量可能在幕后實際上屬于一個子類。當確定是這種情況時,開發(fā)者可以嘗試向下轉到它的子類型,此時需要使用用類型轉換操作符as,此操作符有兩個形式:一種是強制形式as!;另一種是條件形式as?。以下就是對這兩個操作符的講解。1.強制形式——as!向下轉型的強制形式as!把試圖向下轉型和強制解析轉換結果結合為一個操作。如果當轉換一定成功時,才可以使用強制形式。2.條件形式——as?條件形式as?將返回一個開發(fā)者試圖向下轉成的類型的可選值,當開發(fā)者不確定向下轉換可以成功時,可以使用條件形式。8.5.3AnyObject和Any的類型轉換在編寫程序時,對于一些類型不明確的類型,Swift提供了兩種類型別名,分別為AnyObject和Any。1.AnyObject類型AnyObject可以表示任意類型的實例。在編程中,經常會接收到一個[AnyObject]類型的數(shù)組,或者說“一個任意類型對象的數(shù)組”。在這些情況下,開發(fā)者可以使用強制形式的類型轉換(as?。﹣硐罗D數(shù)組中的每一項到比AnyObject更明確的類型,不需要可選解包。2.Any類型Any比AnyObject使用的范圍更廣,它可以表示任何類型,除了方法類型。8.6綜合案例本節(jié)將圍繞類的繼承為開發(fā)者講解一個綜合案例,公司包括很多成員(member)。他們都具有共同的特性,如性別、年齡、入職時間

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論