OC物件導向的三大特徵 封裝 繼承 多型

2021-06-27 13:42:16 字數 3255 閱讀 3885

一、封裝

1、封裝是物件和類概念的主要特性。它是隱藏內部實現,穩定外部介面,可以看作是「包裝」。 封裝,也就是把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。

2、set方法

(1)  作用:用來設定成員變數,可以在方法裡面過濾掉一些不合理的值

(2)  命名規範:

方法都是以set開頭,而且後面跟上成員變數名,成員變數名的首字母必須大寫

形參名稱不要跟成員變數同名

3、get方法

1)  作用:返回物件內部的成員變數

2)  命名規範:get方法的名稱一般就跟成員變數同名

4、**示例

#import

// 宣告

@inte***ce car : nsobject

/*set

方法*/

- (void) setwheels:(int)wheels;

/*get

方法*/

- (int) wheels;

@end

@implementation car

// set

方法的實現

- (void) setwheels:(int)wheels

_wheels = wheels; }

// get

方法的實現

- (int) wheels

@end

5、封裝的好處:

(1).使用更加簡單 

(2).變數更加安全

(3).可以隱藏內部實現細節 

(4).開發速度加快

注意:屬性封裝了例項變數,方法封裝了具體的實現**, 類封裝了屬性和方法。子類可以繼承父類中的方法,還可以重寫(override)父類的方法。

二、繼承

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

oc中乙個類可以繼承另乙個類,被繼承的類成為超類(super class),繼承的類是子類(childclass),可以直接擁有父類中所有非私有成員(相關例項變數)、方法。

繼承的實現  在介面中使用符號「:」。例如 

@inte***ce student: nsobject

通過繼承建立的新類稱為「子類」或「派生類」,被繼承的類稱為「基類」、「父類」或「超類」。繼承的過程,就是從一般到特殊的過程。在考慮使用繼承時,有一點需要注意,那就是兩個類之間的關係應該是「屬於」關係。例如,bird 類是乙隻動物,dog 類也是乙隻動物,因此這兩個類都可以繼承animal類。但是color類卻不能繼承animal 類,因為顏色並不是乙隻動物。

2、**示例:

//bird

的宣告@inte***ce bird : nsobject

- (void)eat;

@end

//bird

的定義@implementation bird

- (void)eat

@end

// dog

的宣告@inte***ce dog : nsobject

- (void)eat;

@end

// dog

的定義@implementation dog

- (void)eat

@end

有相同的屬性和行為,抽出乙個父類animal(先抽取weight屬性,再抽取eat方法)

//animal

的宣告@inte***ce animal: nsobject

- (void)eat;

@end

//animal

的定義@implementation animal

- (void)eat

@end

l        子類在父類的基礎上拓充屬性和方法

//bird

的宣告@inte***ce bird : animal

- (void)fly;

@end

//bird

的定義@implementation bird

- (void)fly

@end

// dog

的宣告@inte***ce dog : animal

- (void)run;

@end

// dog

的定義@implementation dog

- (void)run

@end

3、子類方法和屬性的訪問過程:

(1).如果子類沒有,就去訪問父類的

(2).父類被繼承了還是能照常使用的

(3).父類的靜態方法

(4).畫繼承結構圖,從子類抽取到父類

(5)  .nsobject的引出:全部oc類的最終父類,包含了一些常用方法,比如+new

4、繼承的好處

(1).不改變原來模型的基礎上,拓充方法

(2).建立了類與類之間的聯絡

(3).抽取了公共**

5、壞處:耦合性強

三、多型

1、多型性(polymorphism)是允許你將父物件設定成為和乙個或更多的他的子物件相等的技術,賦值之後,父物件就可以根據當前賦值給它的子物件的特性以不同的方式運作。簡單的說,就是一句話:允許將子類型別的指標賦值給父類型別的指標。不同物件以自己的方式響應相同的訊息的能力叫做多型。意思就是假設生物類(life)都用有乙個相同的 方法-eat;
那人類屬於生物,豬也屬於生物,都繼承了life後,實現各自的eat,但是呼叫是我們只需呼叫各自的eat方法。
也就是不同的物件以 自己的方式響應了相同的訊息(響應了eat這個選擇器)。

實現多型,有二種方式,覆蓋,過載。

覆蓋(override),是指子類重新定義父類的虛函式的做法。

過載(overload),是指允許存在多個同名函式,而這些函式的參數列不同(或許引數個數不同,或許引數型別不同,或許兩者都不同)。

總結:封裝可以隱藏實現細節,使得**模組化;繼承可以擴充套件已存在的**模組(類);它們的目的都是為了——**重用。而多型則是為了實現另乙個目的——介面重用!多型的作用,就是為了類在繼承和派生的時候,保證使用「家譜」中任一類的例項的某一屬性時的正確呼叫。

2、 **示例

person *p = [student new];

p->age = 100;

[p walk];

子類物件賦值給父類指標

父類指標訪問對應的屬性和方法

3、多型的好處

用父類接收引數,節省**

OC物件導向三大特徵 繼承

話接上回 繼續整理,繼續感謝文頂頂大神。oc物件導向三大特點之繼承 一 基本概念 程式的世界和人類的 物件 世界在思想上是沒有什麼區別的,富二代繼承了父母,自如就擁有了父母擁有的所有資源,子類繼承了父類同樣就擁有了父類所有的方法和屬性 成員變數 在這裡動物是貓類和狗類的父類,貓類是黑貓和白貓的父類。...

物件導向的三大特徵 封裝 繼承 多型

面向過程 當實現乙個功能時,每個步驟都要親歷親為,詳細處理每乙個細節。面向過程 當實現乙個功能時,不關心步驟,找乙個具有該功能的人,完成這件事,注重結果。類 對一類事物的描述,是抽象的。定義類 成員變數 成員方法。物件 是一類事物的例項,是具體的。使用格式 物件名.成員變數 物件名.成員方法 pri...

python物件導向三大特徵(封裝,繼承,多型)

目錄繼承 繼承方法重寫 多型 python是物件導向的語言,也支援物件導向程式設計的三大特性 繼承 封裝 多型。封裝 隱藏 隱藏物件的屬性和實現細節,只對外提供必要的方法,相當於將 細節封裝起來 只對外暴露 相關呼叫方法 通過 私有屬性,私有方法 的方式,實現 封裝 python追求簡潔的語法,沒有...