OC之繼承 初始化方法

2021-06-23 06:39:01 字數 1288 閱讀 4291

一、繼承

繼承的上層:父類,繼承的下層:子類。 繼承是單向的,不能相互繼承。 繼承具有傳遞性:a繼承於b,b繼承於c,a具有b和c的特徵和行為。 子類能繼承父類全部的特徵和行為。

因為沒有,所以所有。

物件導向提供了繼承語法,能大大簡化**。把公共的方法和例項變數

寫在父類裡,子類只需要寫自己獨有的例項變數和方法即可。

繼承既能保證類的完整,又能簡化**。

繼承的特點:

oc中只允許單繼承

。 沒有父類的類稱為根類,

oc中的根類是nsobject

(祖宗)。 繼承的內容:所有例項變數和方法。 如果子類不滿意父類方法的實現,可以重寫父類的方法。

super是編譯器指令,並非物件。 作用:給super發訊息,可以執行父類中實現的方法。 子類可以重寫父類的方法,即:子類既有自己的實現,又有父類繼承下來的實現,如果想使用父類的實現,向super傳送訊息。

二、初始化方法

@class 只是用來宣告後邊是乙個類名,不負責引入檔案

@class 用來解決兩個類的迴圈問題,#include 用來解決迴圈引用的問題

建立物件分兩步:開闢空間、初始化。

初始化方法的主要作用是:為某些例項變數賦初值。 初始化方法在物件的整個生命週期裡只使用一次。

每乙個例項物件在它的生命週期裡一定只初始化一次

方法:學習繼承之前,初始化方法,沒有self = [super init]字樣。我們為例項變數逐一賦值。 學習繼承之後,父類中宣告了公共的例項變數。作為父類,也應該有自己的初始化方法,為這些公共例項變數賦初值。

子類定義了除父類中公共例項變數之外的例項變數。在自身的初始化方法中,優先向super傳送init訊息,初始化公共變數,初始化成功之後,再初始化自身特有變數,從而完成全部例項變數的初始化。

過程:執行父類中實現的初始化方法。(向上遞迴到nsobject類中的初始化方法)

從根類nsobject開始執行初始化方法。 判斷父類中的初始化是否成功,即self是否存在。 完成物件的初始化設定,返回物件。 初始化子類例項變數。

特徵:初始化方法是 「-」方法

id或者instancetype型別的返回值 以init開頭 可以帶0到多個引數 內部實現:先執行super的初始化方法,再初始化自身變數,return self。

三、便利構造器

便利構造器在初始化方法的基礎上前進了一小步。封裝了物件建立過程。

便利構造器是「+」方法

,返回本型別的例項,方法名以類名開頭。 可以有0到多個引數。 內部實現:封裝了alloc和初始化方法。使用起來更加簡潔。

OC之繼承,初始化方法,便利構造器

1.繼承 是物件導向程式設計的乙個核心,在objective c的繼承體系中,位於最頂層的根類是nsobject,繼承的方向是單向的,而且只能繼承乙個父類。繼承具有傳遞性,例如 學生繼承於人類,大學生繼承於學生,則大學生不但具有學生的成員變數和方法,而且也具有人類的成員變數和方法。2.初始化方法 顧...

OC3 繼承和初始化方法

繼承和初始化方法 乙個完整的初始化方法 每乙個類只在乎自己的初始化方法就可以了 如果乙個初始化方法在被別的初始化方法呼叫 來初始化一系列的成員變數 就把這個方法叫做指派初始化方法 指派初始化方法的作用 1簡化 2確保在使用其他的初始化方法的時候指派初始化方法中得 一定被呼叫 實現遍歷構造器方法 把初...

OC 繼承,便利構造器,初始化方法

zombie.h 自定義初始化方法的宣告 id initwithblood nsinteger blood attack nsinteger attack speed cgfloat speed 便利構造器 zombie zombiewithblood nsinteger blood attack ...