OC繼承

繼承 
繼承的思想:當多個類出現部分相同的實例變量和方法時,就考慮用繼承
繼承的使用:將多個類中相同的實例變量的方法提出來寫成一個公共的父類.

繼承方法
1.保留父類 對該方法的實現,(不用重寫)2.案子類重寫之後的方式來實現,(重寫,忽視父類的實現)3.既有父類對該方法的實現,又有子類對該方法的實現.

繼承的上層: 父類 ,繼承的下層:子類
繼承是單向的,不能相互繼承。
繼承具有傳遞性:A繼承於B,B繼承於C,A具有B和C的特徵和行爲
子類能繼承父類全部的特徵和行爲.
面向對象提供了的繼承語法,能夠大大簡化代碼,把公共的方法和實例變量寫在父類裏,子類只需要寫自己獨有的實例變量和方法即可
繼承既能保證類的完整,又能簡化代碼,讓類與類之間的關係更加緊密。


繼承特點
OC中只允許單繼承
沒有⽗父類的類稱爲根類,OC中的根類是NSObject(祖宗)。
繼承的內容:所有實例變量和⽅方法。
如果⼦子類不滿意父類方法的實現,可以重寫父類的方法。
- (void)eat{    NSLog(@"%@在喫草",_name); }
eat方法是由子類繼承自父類Person中的,如果自雷需要修改父類中的實現,則只需在類的實現部分重新定義該方法即可。


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

作用:給super發消息,可以執行父類中實現的方法。
當子類重寫父類方法時,通過super執行父類的實現,又擁有自己的實現,相當於對父類已經定義的方法做擴展。
子類可以重寫父類的方法,即子類既有自己的實現,又有父類繼承下來的實現,如果想使用父類的實現,向super發送消息。


  初始化方法

創建對象分兩步:開闢空間,初始化。
初始化方法的主要作用是:爲某些實例變量賦初值。
初始化方法在對象的整個生命週期裏只使用一次。


    學習繼承之前,初始化方法,沒有self=[super init] 字樣。我們爲 實例變量逐一賦值。
   學習繼承之後,父類生命了公共的實例變量。作爲父類,也應該有自己的初始化方法,爲這些公共實例變量賦初值。
  子類定義了除父類中公共實例變量之外的實例變量。在自身的初始化方法中,優先向super發送init消息,初始化公共變量,初始化成功之後,再初始化自身特有變量,從而完成全部實例變量的初始化。

 初始化方法的特徵

初始化方法是”-“方法
id或者instancetype類型的返回值
以init開頭
可以帶0到多個參數
內部實現:先執行super的初始化方法,在初始化自身變量,return self。


便利構造器
便利構造器.作用快速創建對象,內部封裝了創建對象的過程,格式:1 +號方法 2 返回值類型id 3.以類名+with開頭,拼接上多個參數
便利構造器在初始化的方法芙蓉基礎上前進了一小步,封裝了對象創建過程。
可以有0到多個參數。
內部實現:封裝了alloc和初始化方法。使用起來更加簡潔。


實現
1. 聲明和實現便利構造器。
2. 使⽤用便利構造器創建對象
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章