OC三大特性之繼承和多型

2021-06-27 13:40:07 字數 2068 閱讀 6447

一、繼承

1.概念:程式裡的繼承子類繼承了父類,那麼子類就擁有父類中的所有成員變數和方法,

這跟現實中的狗是動物的一種,狗也具備了動物                   所必備的屬性,更符合我們的理解。

2.繼承的好處與缺點:

1>抽取出了重複的**

2>建立了類和類之間的聯絡

繼承的缺點:耦合性太強

3.繼承的例項

@inte***ce animal:nsobject

// 動物裡繼承了nsobject,獲得nsobject類的方法;

// setter和getter

......

@end

@inte***ce dog :animal

// dog類繼承animal類,並獲得了父類的所有方法和屬性

@end

原理圖

注意:oc語言是單繼承語言。在oc語言中,基本上所有類的根類都是nsobject類。

二、繼承與組合

繼承的適用場合:

1>當兩個類擁有相同的屬性和方法時,就可以將相同的屬性和方法抽取到乙個父類中。

2>當a類完全擁有b類中的部分屬性和方法時,可以考慮讓b類繼承a類(考慮),在這種情況下,也可以考慮使用組合。

繼承:xx是***,如狗是動物,可以讓狗繼承動物類

組合:***擁有***,如學生有書,可以讓書這個類作為學生類的屬性

三、重寫和super

1.重寫概念:子類重新實現父類中的某個方法(對某個方法重新實現),覆蓋父類某個方法以前的做法。

2.使用場合:

1>當兩個類擁有相同屬性和方法的時候,就可以將相同的東西抽取到乙個父類中

2>當a類有用b類中的部分屬性和方法時,可以考慮讓b類繼承a類。

3. super用法:子類呼叫父類中的某個方法

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

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

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

(子類可以直接呼叫父類中的某個方法 [super 方法名])

4. super重寫方法

- (void)walk // 重寫父類的walk方法

四、多型

1.基本概念

多型在**中的體現,即為多種形態,必須要有繼承,沒有繼承就沒有多型。

在使用多型是,會進行動態檢測,以呼叫真實的物件方法。

多型在**中的體現即父類指標指向子類物件。

2.**體現

animal  *a=[dog new];//animal是父類,dog是子類 , 狗是動物

錯誤寫法:dog *d=[animal new]; // 動物不一定是狗,也可能是貓

3.優缺點

優點:節省了**,提高了效率。

如果方法或函式引數中使用的是父類型別,則可以使用父類指標傳入父類和子類物件。

void feed(animal *a) // 定義喂動物的函式。

解析:上述函式的形參是父類animal,所以此函式可以傳入父類和子類。

侷限性:

父類型別的指標不能呼叫子類的方法。(必須將父類指標強制轉化為子類指標時才能呼叫子類中方法)

animal  *a=[dog new];            

dog *d = (dog *) a; // 將父指標a強制轉化為子類指標d

OC語言 三大特性 繼承與多型

繼承是oc中比較常見的。1 繼承 就是當兩個類擁有相同的屬性和方法時,就可以將相同的東西抽取到乙個父類中。子類可以擁有父類中所有的成員變數和方法。2 繼承的好處 可以抽取重複 節省時間。建立了類之間的關係。3 使用注意 父類必須寫在子類前面 子類不能擁有和父類相同的名稱的成員變數 當呼叫某個方法時,...

OC的三大特性之繼承

繼承的好處 1 抽取重複 2 建立了類之間的關係 3 子類可以擁有父類中的所有成員變數和方法 注意點 1 基本上所有類的根類是nsobject import animal的宣告 inte ce animal nsobject void setage int age int age void setw...

OC中類的三大特性 封裝 繼承和多型

oc是一門物件導向的變成語言,具有面向兌現的最基本的特徵 封裝性 繼承性 和多型性。一.封裝 為何要用封裝?當定義了乙個類時,類中的資料不允許外界訪問,或者允許外界只能讀取不能修改而需要隱藏時,就需要用到 set方法或者get方法。1.oc中的set方法 作用 提供外界設定成員變數值,對引數進行過濾...