------- 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類,而現在又有兩個類dog和cat都繼承了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的全部...