IOS父類(lèi)與子類(lèi)

一.繼承:

子類(lèi)可以直接復(fù)用父類(lèi)中的成員.子類(lèi)繼承父類(lèi)所有方法的聲明和實(shí)現(xiàn) 非私有的實(shí)例變量以及協(xié)議 繼承時(shí)要在.h中聲明一下 繼承具有單根性和傳遞性
繼承的根類(lèi):大多都繼承自 NSObject 類(lèi),所以在定義一個(gè)類(lèi)時(shí),要繼承NSObject 類(lèi)。
繼承就是代碼優(yōu)化公共部分交給父類(lèi)
例如:

(Person是父類(lèi)Worker 和Worker都繼承了Person成為子類(lèi))(注:oc中的所有類(lèi)都繼承與NSObject)

#import "Person.h"
@interface Worker : Person
 
@end
 
#import "Person.h"
@interface Worker : Person
@end

二.繼承的特點(diǎn):

  1. 使用繼承可以實(shí)現(xiàn)代碼的復(fù)用,減少代碼冗余;
  2. Objective-C中一個(gè)類(lèi)可以繼承另一個(gè)類(lèi);
  3. 被繼承的類(lèi)稱(chēng)為父類(lèi)或超類(lèi)(基類(lèi));
  4. 繼承的類(lèi)稱(chēng)為子類(lèi)或派生類(lèi);(孩子類(lèi));
  5. 子類(lèi)可以直接擁有父類(lèi)中所有允許子類(lèi)繼承的屬性和方法;
  6. (繼承關(guān)系是可以傳遞的)子類(lèi)除了可以調(diào)用父類(lèi)的方法,也可以調(diào)用父類(lèi)的父類(lèi)的方法,也就是說(shuō)繼承可以確保某個(gè)父類(lèi)型之下的所有類(lèi)都會(huì)有父類(lèi)型所持有的全部方法;
  7. 子類(lèi)可以有自己的成員變、量屬性和方法;
  8. (單一繼承性)Objective-C不支持多重繼承。

三.繼承的作用:

繼承的標(biāo)識(shí)為英文的“:”冒號(hào)(),使用繼承可以定義一個(gè)具有父類(lèi)所有功能(成員和方法)的新類(lèi),它繼承了父類(lèi)的功能。

四.繼承中的方法重寫(xiě):

  • 編寫(xiě)子類(lèi)時(shí),某些方法(從父類(lèi)繼承過(guò)來(lái))需要自己的代碼實(shí)現(xiàn);
  • 子類(lèi)允許重寫(xiě)父類(lèi)的方法,在調(diào)用子類(lèi)對(duì)象的重寫(xiě)方法時(shí),就會(huì)調(diào)用重寫(xiě)后的方法;
  • 父類(lèi)中被子類(lèi)所重寫(xiě)的方法則在調(diào)用子類(lèi)方法時(shí)被忽略;

五.super關(guān)鍵字:

  • 如果在子類(lèi)中 需要調(diào)用父類(lèi)的功能,可以借助super關(guān)鍵字;
  • 子類(lèi)中使用super發(fā)送消息時(shí),實(shí)際上是告訴子類(lèi)調(diào)用父類(lèi)的方法;
  • 如果父類(lèi)沒(méi)有定義該方法,則繼續(xù)在繼承鏈上查找,直到找到為止;
  • 如果查到NSobject為止仍然未找到,則報(bào)錯(cuò);
  • 重寫(xiě)方法時(shí)經(jīng)常會(huì)使用super關(guān)鍵字調(diào)用父類(lèi)的方法。
    六.為何要使用繼承?
    將所有重復(fù)的內(nèi)容合并在一起,可以使代碼有效率,簡(jiǎn)潔,才意味著是一個(gè)成功的架構(gòu)。否則,修改代碼時(shí)需要修改多處,就很容易出錯(cuò)。

七.繼承使用注意:

  • 父類(lèi)要寫(xiě)在子類(lèi)前面
  • OC中不允許子類(lèi)中擁有和父類(lèi)中相同名稱(chēng)的成員變量
  • OC中子類(lèi)可以重寫(xiě)父類(lèi)方法,當(dāng)調(diào)用子類(lèi)時(shí)優(yōu)先調(diào)用子類(lèi)方法
  • 繼承造成類(lèi)與類(lèi)之間耦合性太強(qiáng),若父類(lèi)不見(jiàn),則子類(lèi)不能使用
  • 父類(lèi)類(lèi)型的變量不能用來(lái)調(diào)用子類(lèi)的方法

八.繼承中方法調(diào)用的流程:

首先到子類(lèi)去找,如果有該方法,就調(diào)用子類(lèi)方法,如果沒(méi)有,就再到父類(lèi)去找,如果父類(lèi)還沒(méi)有,再到父類(lèi)的父類(lèi)去找,如果最后還沒(méi)有找到,程序會(huì)崩潰。

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

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

  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,041評(píng)論 0 9
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線(xiàn)程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,638評(píng)論 18 399
  • 10月25日,縣委常委、政法委書(shū)記王育澤,在縣公安局長(zhǎng)陜世毅、副局長(zhǎng)馬志青、禁毒辦主任馬祖委及交警大隊(duì)負(fù)責(zé)人的陪同...
    積石閱讀 416評(píng)論 0 0

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