




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第七章多態、方法重寫、協議2回顧在objective-C中,一個類可不可以繼承自多個類?不可以繼承的主要作用是?實現代碼的重用在objective-C中,訪問修飾符一共有幾種?各是哪些?3種:@private@protected@public默認不寫時,相當于哪一種訪問修飾符?@protected3回顧類別的主要作用?1.為原類添加方法2.將類的實現分散到多個不同文件中去,便于代碼管理。一個類可以有幾個類別?一個類可以有任意多個類別。類別可不可以給類添加成員屬性?它只能為類添加方法,不能為類添加成員屬性!4本章任務
掌握多態、協議的概念及其具體使用。理解方法的重寫5本章目標
理解什么是多態理解和掌握方法的重寫理解協議的概念掌握如何編制協議6多態在面向對象的第一章中,我們講過多態的概念。多態即:不同的對象對同一個事件有不同的反應。同樣都叫做繪圖,但繪制矩形和繪制圓不一樣。繪制矩形需要知長,寬,坐標位置,需要用直尺來繪制;繪制圓需知道圓心位置,圓半徑,需要用圓規來繪制。這就是“多態”。不同對象對同一名稱的操作有不同處理方式。7多態再看一個多態的例子:彩色打印機
打印機
黑白打印機打印效果:彩色打印效果:黑白打印
打印
同樣都是作“打印”的工作。若是彩色打印機則會打出彩色效果,若是黑白打印機則會出黑白效果,這就是多態。多態的具體表現多態在objective-C中主要表現為方法的重寫和協議。1重寫(發生在父類和子類之間)這是不同的事物對同一個事件有不同的反應。打印機有打印的方法,但不同的打印機打印效果不一樣。重寫在程序里體現在父類和子類之間。父類有一個方法,當子類也擁有父類相同的方法時這就叫重寫(方法名相同,參數相同,返回類型也相同)。2協議協議是多個類共享的一個方法列表。協議中列出的方法沒有相應的實現,由其它類來實現。方法的重寫在繼承關系中,若子類中某方法的方法名,參數,返回值與父類某方法相同,則稱為方法的重寫現在在我們之前做的汽車類中,添加一個展示自身的方法show:。我們希望當不同的汽車展示自身時,會有不同的展示效果。用方法重寫具體實現如下:1.在Car.h中添加show:方法聲明:2.在Car.m中添加show:方法實現:3.在Car的兩個子類頭文件中(Cooper.h和Truck.h)添加show:方法聲明:方法的重寫4.在Car的兩個子類實現文件中(Cooper.m和Truck.m)添加各自的show:方法實現:在Cooper.m中在Truck.m中兩種車的show:方法實現不一樣4.最后在main.m中添加如下代碼:同樣都是用show:方法,運行效果一樣嗎?方法的重寫在父類、子類中都定義了show:方法,到底調用哪一個show:方法,由具體生成的對象決定。若生成的對象是父類,則調用父類的show:是子類對象則調用子類的show:。這就是方法重寫,是多態的體現之一。來看一個特殊的情況:這稱為“父類的引用指向子類的對象”。是正確的。最后仍然調用的是子類Cooper中的方法show:。注意!不允許子類的引用指向父類的對象:
這樣寫有錯嗎?運行結果是什么?正確錯誤!Cooper*car=[Caralloc]init];接口、協議在現實生活中,很多地方都體現了接口的概念:聲卡聲卡、網卡、顯卡的結構、功能都不相同,但它們都屬于PCI卡,因此它們都可以插在主板PCI插槽上。顯卡網卡主板只要是PCI標準接口卡就可以插在此主板上正常工作“PCI標準”就是接口接口、協議另例:能插在交流電源上的電器必須是交流電電器;符合某幾種規格大小的紙才能用在某打印機上;符合一系列指標要求的的人才算是身體健康的人;符合哪些特征的才稱為昆蟲。。。等等。綜述起來,接口其實就是我們現實生活中“標準”的意思。即必須要符合某些規范或要求,才被認為是某事物或才有資格做某事。落實到程序中,通俗的說,接口就是一個模版,在此模版中寫好了一系列空方法。以后在創建類時,旦凡想成為有我接口名號的類,必須符合我的標準,那就是實現我模版中列出的所有空方法,這樣的類才算是屬于我接口旗下的類。在objective-C中,“協議”其實就是我們這里所談的接口,它是一個方法模版,在它名下的任何子類都必須實現它列出的所有空方法。接口、協議多態的另一體現也就是協議。比如說,都叫交流電器,交流電電視機和交流電洗衣機它們的功能作用就完全不一樣。這就體現了多態性。那協議的存在最終有什么意義呢?不要這個方法的標準模版,程序不是一樣的可編制出來嗎?試想一下,正因為這兩樣電器都符合交流電器這個標準,我們就可以對它們做一些相同的操作了。比如我可以把它們都插在交流電源上,讓它們工作。甚至以后只要我聽到某電器是交流電器,那么不管它有什么功能,總之我能確定一點,那就是它一定能插在交流電源上。“可以讓子類們以后被
當成同一類事物看待;
它們都能做此協議規定的事”這就是使用協議的好處。都能插在交流電源上15協議現在在我們之前做的汽車類基礎上,添加一個協議:維修(Repair)。我們希望不論是什么種類的汽車,若壞了都可以被維修工修理。先看看定義協議的語法:1.使用@protocol指令,之后設定協議名稱,然后就可以聲明一些方法,最后以@end結束: @protocol
協議名稱 -(void)newMethod;//方法聲明 @end2.然后就可以在要實現協議的類文件中引入協議:@interface類名:NSObject<協議名稱>{……3.最后在該類的實現文件中實現協議所聲明的方法:-(void)newMethod{……//該方法的具體實現}注意要放在一對尖括號中16協議2.在汽車類Car.h文件中,引入協議:給汽車類添加維修Repair協議的具體做法如下:1.在Xcode中創建Repair.h協議文件,在其中加上如下代碼:3.在汽車類Car.m文件中,實現協議所聲明的方法:17協議4.協議編程完成。最后在main.m中試驗一下效果:運行結果:為了更好的說明使用協議的好處,我們增加一個修理工類,他專門負責修理汽車。設想一下沒有使用協議的情況:如果我們要讓他既能修寶馬車,又能修卡車,我們往往會想到在修理工類中添加兩個修理方法,一個專門用來修寶馬車,一個專門用來修卡車:那要是以后系統還要添加新的汽車怎么辦?那只有每次都在修理工類中再增加一個專門的修理新汽車的方法了。有多少新汽車,就要寫多少修理方法,非常的不方便。有沒有更好的辦法呢?我們來看看協議能否幫助解決這個問題:18協議我們增加一個修理工類,在.h文件中聲明如下修理方法:可理解為:修理工只能修符合Repair協議標準的汽車在修理工.m文件中實現該修理方法:以后只要是遵循了<Repair>協議的汽車,都能交給該維修工進行修理了。符合Repair協議的汽車都一定有修引擎和修輪胎的方法這樣,不管以后添加多少種新汽車,只要它實現了Repair協議,都可以交給此工人修了!修理工類中只需要這一個
repair:方法就能匹配所有的汽車。代碼演示:使用協議的好處19總結什么是多態?多態即不同的對象對同一個事件有不同的反應。在objective-C中哪些地方體現了多態?方法的重寫、協議什么是方法的重寫?在繼承關系中,若子類中某方法的方法名,參數,返回值與父類某方法相同,則稱為方法的重寫定義協議的格式?@protocol
協議名稱-(void)newMethod;//方法聲明@end@interface類名:NSObject<協議名稱>{ ……20課后作業根據課堂演示,為Car及其子類Cooper、Truck添加方法show:,實現方法重寫。給汽車類添加協議Repair,協議中含修理發動機repairEngine:,修理輪胎repairTire:兩個方法,并讓Car實現這兩個方法。添加修理工類Worker,為其添加修理方法repair:,讓他能修理凡是實現了Repair協
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設置網絡安全管理制度
- 設計公司項目管理制度
- 證券事務專員管理制度
- 診所感染預防管理制度
- 診所藥品錄入管理制度
- 試驗檢測過程管理制度
- 財務結賬相關管理制度
- 財政內部控制管理制度
- 貨物倉儲安全管理制度
- 貨運火車進站管理制度
- 機動車查驗員(中級)職業鑒定理論考試題及答案
- 國開(貴州)2024年秋《地域文化(專)》形考任務1-2答案
- 完整版:美制螺紋尺寸對照表(牙數、牙高、螺距、小徑、中徑外徑、鉆孔)
- 地面電性源瞬變電磁法地球物理勘查技術規程DB41-T 2106-2021
- 拆除工程簡單合同
- 2024科技住宅設計標準
- 江蘇省蘇州市工業園區2023-2024學年八年級下學期期末語文試題(原卷版)
- 城市地理學智慧樹知到期末考試答案章節答案2024年華中師范大學
- 綜合管廊及道路實施性施工組織設計概述
- 2024年人教版初一數學下冊期末考試卷(附答案)
-
評論
0/150
提交評論