黑馬程式設計師 OC學習之封裝,繼承,多型

2021-06-21 11:04:54 字數 2523 閱讀 9825

------- ios培訓、android培訓、期待與您交流! ----------

面向對的三大特徵就是,我們經常提到的 封裝、繼承、多型。

1.封裝:

隱藏屬性、方法或實現細節的過程,不去關心你的方法是怎麼實現的,只關心你能做什麼。並且,封裝的意義在於

保護或者防止**(資料)被我們無意中破壞。

通常情況下我們可能會定義乙個類,比如student

,這是乙個學生類

他會有一些成員變數,例如:

int age;   / /  學生姓名

int number //學生編號

那麼也許我們在之後,建立了乙個student物件,

student  *s=[student new]

我們就就可以給這個s物件的age賦值操作,在實際情況下,我們也學會設定

s.age=10;

s.age=20;

但是如果程式或者人為,將

s.age=-20;

上面這就感覺很奇怪了,在現實中這顯然是沒有意思的,也是違背實際情況的。那麼這是我們就需要用到封裝了。

將 age  設為乙個 @private,這樣,這個成員變數就不能在累的外部訪問了。

想要更改age的值,我們就提供乙個

set方法------》

如果向下面這樣寫:

// set方法的實現

-   (viod)setage : (int)newage

age = newage; }

這樣經過setage方法判斷過濾,就可以實現正確安全的操作了,這就是乙個簡單的封裝案例。

2.繼承

基於乙個已存在的類構造乙個新類。繼承已存在的類就是復用這些類的方法和屬性,在此基礎上,還可以在新類中新增一些新的方法和屬性.

物件導向程式設計 (oop) 語言的乙個主要功能就是「繼承」。繼承是指這樣一種能力:它可以使用現有類的所有功能,並在無需重新編寫原來的類的情況下對這些功能進行擴充套件。

通過繼承建立的新類稱為「子類」或「派生類」,被繼承的類稱為「基類」、「父類」或「超類」

。繼承的過程,就是從一般到特殊的過程。在考慮使用繼承時,有一點需要注意,那就是兩個類之間的關係應該是「屬於」關係。例如,employee 是乙個人,manager 也是乙個人,因此這兩個類都可以繼承 person 類。但是 leg 類卻不能繼承 person 類,因為腿並不是乙個人。

oc中整合的句法就是 :   

例如:@inte***ce  person : nsobject

@end

注:nsobject是所有類的基類

我們還可以定義乙個student 來繼承person,如下

@inte***ce  student : person

@end

經過上面的定義,雖然student類中沒有name 以及  age的定義,但是但你建立乙個student物件時,它是具有age以及name這兩個屬性的。

從上面就知道:

繼承的好處

1.       重複的**可以只寫一邊。

2.       子類可以擁有父類中所有的成員變數和方法。

3.多型

多型性(polymorphism)是

允許你將父物件設定成為和乙個或更多的他的子物件相等的技術,賦值之後,父物件就可以根據當前賦值給它的子物件的特性以不同的方式運作。簡單的說,就是一句話:允許將子類型別的例項給父類型別的指標。

假如我們有乙個animal類,而現在又有兩個類dogcat都繼承了animal

我們知道dog以及cat兩個類,都有實現「叫」的這個功能,但是兩種類的物件的叫的具體方法肯定是不一樣的。那個這是,我們想寫乙個方法,實現當我們傳乙個dog的物件,就執行dog類定義的方法。傳乙個cat的物件,也執行自己的方法。那麼怎麼辦:

這裡就用到了多型:例如

animal  *a = [dog  new];  //這是乙個dog物件

animal  *b = [cat  new]; //這是乙個cat物件

這就是允許將子類型別的例項給父類型別的指標。

然後我們分別呼叫

[a say];//這是會執行dog類定義的具體方法

[b say];//這是會執行cat類定義的具體方法 

多型的實現可以採用以下幾種方式:

(1)使用 vod * (萬能指標)來實現「編譯時多型」。

(2)使用函式指標來實現「執行時多型」。

(3)使用型如

struct struct_name;

這種形式。

舉例:

void handlemsg(unsinged int id, void *p)

}

------- ios培訓、android培訓、期待與您交流! ----------

黑馬程式設計師 OC 學習之旅 封裝 繼承

類方法的概述 表示類方法,就是類呼叫方法,不依賴任何物件的方法 表示物件方法,只能物件呼叫,依賴於任何物件的方法 類的使用注意事項 類方法可以和例項方法同名,例項方法有例項物件訪問呼叫,類方法要通過類裡訪問呼叫。類方法也可以是從父類繼承而來,子類可以重寫類方法,類方法和例項方法一樣在inte ce ...

黑馬程式設計師 OC封裝

物件導向的三大特性 封裝 繼承和多型 在開發過程中,考慮到安全性要求,我們一般不在成員變數名前面使用 public protected等關鍵字修飾,而是使用set方法來為物件提供成員變數的值。set方法的內部也可以對一些不合理的賦值進行篩選過濾。set方法的作用 為外界提供乙個設定成員變數值的方法 ...

黑馬程式設計師學習筆記 OC之繼承

1 為什麼要使用繼承?假如有乙個類dog和乙個類cat,他們的成員變數都是age weight。方法也都一樣。那麼在兩個類裡面分別定義宣告就很囉嗦,很多東西都是一樣的。我們可以把這些相同的東西提取出來組成乙個類animal,然後使用繼承功能,使dog cat繼承animal類就具備animal的全部...