05 黑馬程式設計師 繼承 super關鍵字和多型

2021-06-22 07:20:22 字數 1434 閱讀 1283

父類/超類 superclass

子類 subclass/subclasses

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

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

繼承:xx 是 ***

組合:*** 擁有 ***

a  

b : a

// 繼承:xx 是 ***

// 組合:*** 擁有 ***

2.組合 a

b

繼承的好處:

1> 抽取重複**

2> 建立了類之間的關係

3> 不改變原來模型的基礎上,擴充方法

繼承的缺點:

耦合性強

1> 父類必須宣告在子類的前面

2> 子類不能擁有和父類相同的成員變數

3> 呼叫某個方法時,優先去當前類中找,如果找不到,去父類中找

4>單繼承

子類重新實現父類中的某個方法,覆蓋父類以前的做法

super的作用

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

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

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

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

沒有繼承就沒有多型

某乙個事物的多種形態

oc物件具有多型性

person *p = [student new];

p->age = 100;

[p walk];

子類物件賦值給父類指標

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

優點:如果函式\方法引數中使用的是父類型別,可以傳入父類、子類物件

缺點: 父類型別的變數 不能 直接呼叫子類特有的方法。必須強轉為子類型別變數後,才能直接呼叫子類特有的方法

以下**中animal是父類,dog是子類,run方法是dog的物件方法

animal *aa = [dog new];

// 多型的侷限性:父類型別的變數 不能 用來呼叫子類的方法

//[aa run];

// 將aa轉為dog *型別的變數

dog *dd = (dog *)aa;

[dd run];

動態繫結:在執行時根據物件的型別確定動態呼叫的方法

以下**中animal是父類,dog是子類,[a eat]呼叫的時dog的eat方法

// 多型:父類指標指向子類物件

animal *a = [dog new];

// 呼叫方法時會檢測物件的真實形象

[a eat];

黑馬程式設計師 繼承

asp.net android io開發s net培訓 期待與您交流!c 的繼承與 c 等語言乙個重要的不同,就是只能從乙個類中繼承,這是開發者在權衡了從多個類c 繼承的優勢與劣勢作出的結果。不過,可以從介面繼承。另外,繼承可傳遞。建構函式和析構函式不能被繼承。c 繼承中的重寫 1 virtual ...

黑馬程式設計師 繼承

乙個類宣告的基類說明中只能有乙個單獨的類,單繼承性 雖然類只能直接繼承乙個基類,但繼承的層次沒有限制 隱藏基類的成員 1.宣告乙個新的相同型別的成員,並使用相同的名稱 不包括返回型別 2.要讓編譯器知道你在故意隱藏繼承的成員,使用 new修飾符 基類訪問 可以使用基類訪問表示式訪問隱藏的基類成員 基...

黑馬程式設計師 繼承

黑馬程式設計師 繼承 一 黑馬程式設計師 繼承1基本使用 import animal的宣告 inte ce animal nsobject void setage int age int age void setweigth double weight double weight end anima...