父類/超類 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...