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

2021-06-27 05:05:16 字數 2124 閱讀 3396

一 繼承

1)簡述

繼承的上層: 父類,繼承的下層:子類;

繼承是單向的,不能相互繼承;

繼承具有傳遞性:a繼承與b,b繼承與c,a具有b和c的特徵和行為;

子類能繼承父類全部的特徵和行為;

2)繼承的實現

//學生繼承

person

3)繼承的特點

oc中只允許單繼承;

沒有父類的類稱為根類,oc中的根類是nsobject(祖宗);

繼承的內容:所有例項變數和方法;

如果子類不滿意父類的方法的實現, 可以重寫父類的方法

4)繼承中方法的執行

二 初始化方法

1)簡述

學習繼承之前,初始化方法,沒有self = [ super init]字樣,我們為例項變數逐一賦值;

學習繼承之後,父類中宣告了公共的例項變數,作為父類,也應該有自己的初始化方法,

為這些公共例項變數賦初值;

建立物件分兩步:開闢空間,初始化;

初始化方法的主要作用是:為某些例項變數賦初值

初始化方法在物件的整個生命週期裡只使用一次

初始化方法中,優先向super傳送init開頭的訊息(初始化公共變數),初始化成功後再初始化自身特有變數,從而完成全部例項變數的初始化

self

= [super

initwith

: name 

score

:score]; 

//super 

表示父類繼承過來的方法

, self 

表示自己的方法

2)初始化方法特徵

- (instancetype

)initwithname:(

nsstring

*)name;

1)是" - "(物件)方法

2)型別的返回值 id 或 instancetype型別的返回值

3)方法名(init…)以init開頭;

4)可以帶0~n個引數

5)內部實現:先執行super的初始化方法,再初始化自身變數,return self

這裡super

super是編譯器指令,並非物件;

作用:給super發訊息,可以執行父類中實現的方法;

直接呼叫父類中的某個方法;

super處在物件方法中,那麼就會呼叫父類的物件方法

super處在類方法中,那麼就會呼叫父類的類方法

使用場景:子類重寫父類的方法時,想保留父類的一些行為

子類可以重寫父類的方法,即:子類既有自己的實現,又有父類繼承下來的實現,

如果想使用父類的實現,向super傳送訊息;

//實現自定義初始化方法

- (instancetype)initwithname:(nsstring *)name

score:(cgfloat)score

classname:(nsstring *)classname

height:(cgfloat)height

//3.返回

return self; }

三 便利構造器

1)簡述

便利構造器在初始化的基礎上前進一小步,封裝了物件創造;

變數構造器是" + "(類)方法,返回本型別的例項,方法名以類名開頭person…;

可以帶0~n個引數;

內部實現:封裝了allco和初始化方法,使用起來更加簡潔

2)實現

1)宣告和實現便利構造器

+ (instancetype)personwithname:(nsstring *)name

score:(cgfloat)score

+ (instancetype)personwithname:(nsstring *)name score:(cgfloat)score

2)使用便利構造器建立物件

//建立乙個 person 型別的物件

person*per = [[personalloc]initwith:

@"

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

zombie.h oc03 繼承,便利構造器,初始化方法 created by dllo on 15 7 16.import inte ce zombie nsobject 特徵 行為 對方法的重寫 void walk void attack void dead 自定義初始化方法的宣告 id ini...

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

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

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

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