OC第三天:繼承、初始化⽅法、便利構造器

⼀、繼承

繼承的上層:⽗類,繼承的下層:⼦類。
繼承是單向的,不能相互繼承。
繼承具有傳遞性:A繼承於B,B繼承於C,A具有B和C的特徵和⾏ 爲。
⼦類能繼承⽗類全部的特徵和⾏爲。
⾯向對象提供了繼承語法,能⼤⼤簡化代碼。把公共的⽅法和實例 變量寫在⽗類⾥,⼦類只需要寫⾃⼰獨有的實例變量和⽅法即可。
繼承既能保證類的完整,⼜能簡化代碼

繼承特點

OC中只允許單繼承。
沒有⽗類的類稱爲根類,OC中的根類是NSObject(祖宗)。
繼承的內容:所有實例變量和⽅法。
如果⼦類不滿意⽗類⽅法的實現,可以重寫(overwrite)⽗ 類的⽅法。


super

super是編譯器指令,並⾮對象。

作⽤:給super發消息,可以執⾏⽗類中實現的⽅法。
⼦類可以重寫⽗類的⽅法,即:⼦類既有⾃⼰的實現,⼜有⽗ 類繼承下來的實現,如果想使⽤⽗類的實現,向super發送消息。

⼆、初始化⽅法

初始化⽅法

創建對象分兩步:開闢空間、初始化。
初始化⽅法的主要作⽤是:爲某些實例變量賦初值。
初始化⽅法在對象的整個⽣命週期⾥只使⽤⼀次。

初始化過程
1. ⾃⼰的初始化⽅法中,優先調⽤⽗類的初始化⽅法
2. ⽗類的初始化⽅法中再調⽤⽗類的初始化⽅法,依次往上調⽤
3. 處於最上層的初始化完成之後,回到第⼆層的初始化⽅法中, 完成第⼆層的初始化。
4. 第⼆層的初始化完成之後,回到第三層的初始化⽅法中,依次 執⾏初始化⽅法,直到本類的初始化⽅法完成。
初始化⽅法特徵
初始化⽅法是 “-”⽅法
id或者instancetype類型的返回值
以init開頭
可以帶0到多個參數

內部實現:先執⾏super的初始化⽅法,再初始化⾃⾝變量,return self。

三、便利構造器

便利構造器
便利構造器在初始化⽅法的基礎上前進了⼀⼩步。封裝了對象創 建過程。
便利構造器是“+”⽅法,返回 本類型 的實例,⽅法名以類名開 頭。
可以有0到多個參數。

內部實現:封裝了alloc和初始化⽅法。使⽤起來更加簡潔。


總結

繼承是⾯向對象三⼤特性之⼀,合理的繼承,能減少很多冗餘代碼, 加快開發速度。
初始化⽅法以init開頭,在對象的聲明週期中只使⽤⼀次。
便利構造器封裝了對象的創建過程,進⼀步簡化了對象創建的步驟。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章