繼承與派生
-
1 什么是繼承
- 繼承是使用已存在的類的定義作為基礎(chǔ)驼卖,建立新類的技術(shù),新類的定義可以增加新的數(shù)據(jù)或新的方法鸿秆,也可以使用父類的功能
- [ 繼承]子類通過繼承獲得父類的成員方法和成員變量的過程叫繼承
- [派生]子類在父類的基礎(chǔ)上,又增加了自己新的成員變量和方法的過程叫做派生
注:OC中的繼承都是單繼承款慨,只可以繼承一個(gè)父類
1.1繼承之后:子類可以使用父類成員方法和成員變量(非私有)
1.2成員變量的結(jié)果只看對象
1.3子類自己獨(dú)有的成員變量和方法,其父類不能使用
-
2 繼承的常用表達(dá)方法
在類的聲明中: @interface 子類: 父類
-
3 繼承的作用:
- 以現(xiàn)有的類型創(chuàng)建新的類型
- 快速方便的擴(kuò)展代碼
- 很多情況下谬莹,父類已經(jīng)做了一部分工作檩奠,但是還有一些是需要子類去完成的,這時(shí)候可以繼承父類附帽,重寫父類的方法埠戳,然后用
[super 方法名]
去調(diào)用父類的這個(gè)方法
注:字符串,數(shù)組蕉扮,字典......是不能作為父類來繼承的整胃,因?yàn)槭枪こ填愵惔?/p>
多態(tài)
-
1 特點(diǎn):
- 1 同一個(gè)聲明,不同的實(shí)現(xiàn)
- 2 給不同的對象喳钟,發(fā)相同的消息屁使,所產(chǎn)生的結(jié)果不一樣
-
2 [重寫]:
- 定義:將父類中聲明和實(shí)現(xiàn)好的函數(shù),重新實(shí)現(xiàn)一遍奔则,不需要再次聲明蛮寂,重寫的方法參數(shù)和返回值與父類完全一致
- 作用: 1 子類從父類繼承的方法,有時(shí)候并不適合子類易茬,子類可以重寫這個(gè)方法 2酬蹋、重寫就是重新實(shí)現(xiàn)一遍父類的方法,子類對象最終執(zhí)行的是子類重寫后的方法抽莱,擴(kuò)展了父類的功能
-
3 多態(tài)實(shí)現(xiàn)的方式(條件):
- 必須繼承
- 重寫父類中的方法
- 通過父類指針引用子類對象
注:虛方法體現(xiàn)了不同事物被同一件事觸發(fā)范抓,有不同的響應(yīng);給不同的對象發(fā)送相同的消息食铐,反應(yīng)不一樣
虛函數(shù):
-
1 特點(diǎn):
- 響應(yīng)消息匕垫,不看指針,看對象(給對象發(fā)送消息)
- 父類的指針虐呻,可以指向子類的對象象泵。但是不能調(diào)用子類特有的方法,只能調(diào)用父類和子類共有的方法
注:OC的函數(shù)全部都是虛函數(shù)
類別(給已有的類擴(kuò)展方法):
-
功能
- 可以給已有/系統(tǒng)原生的類增補(bǔ)方法
- 可以對類的方法進(jìn)行分類管理铃慷,可以將類的實(shí)現(xiàn)分散到多個(gè)不同的文件或多個(gè)不同框架中
- 注意:
- 類別中不能添加成員變量单芜,只能聲明成員方法(也無法刪除或修改原來類的方法)
- 使用類別增補(bǔ)的方法必須導(dǎo)入類別頭文件
- 父類類別中的方法,子類也可以用
優(yōu)先級問題:調(diào)用一個(gè)方法犁柜,先在類別里面查找該方法洲鸠,沒有的話才會去本類查找,如果沒有就會跑到父類查找該方法;
類別->本類->父類->父類的父類...
類擴(kuò)展/匿名類別:
當(dāng)有不想對外公開的一些類的方法時(shí),可以使用匿名扒腕,只能在本類中調(diào)用
基本語法:@interface 類名 () @end
注:類擴(kuò)展中的聲明和實(shí)現(xiàn)都放在.m文件中
-
功能
- 可以聲明私有方法
- 方便程序員調(diào)用不公開的方法
- 可以聲明私有成員變量
類別與類擴(kuò)展/匿名的區(qū)別:
- 類別:不能聲明成員變量绢淀;方法外部可以直接調(diào)用
- 類擴(kuò)展/匿名:可以聲明成員變量;方法本部才能調(diào)用
僅供木木學(xué)習(xí)瘾腰,以及有需要的伙伴們閱讀~可轉(zhuǎn)載皆的,不可復(fù)制粘貼喲~