一、繼承
1.概念:程式裡的繼承子類繼承了父類,那麼子類就擁有父類中的所有成員變數和方法,
這跟現實中的狗是動物的一種,狗也具備了動物 所必備的屬性,更符合我們的理解。
2.繼承的好處與缺點:
1>抽取出了重複的**2>建立了類和類之間的聯絡
繼承的缺點:耦合性太強3.繼承的例項
@inte***ce animal:nsobject
// 動物裡繼承了nsobject,獲得nsobject類的方法;
// setter和getter
......
@end
@inte***ce dog :animal
// dog類繼承animal類,並獲得了父類的所有方法和屬性
@end
原理圖
注意:oc語言是單繼承語言。在oc語言中,基本上所有類的根類都是nsobject類。
二、繼承與組合
繼承的適用場合:
1>當兩個類擁有相同的屬性和方法時,就可以將相同的屬性和方法抽取到乙個父類中。2>當a類完全擁有b類中的部分屬性和方法時,可以考慮讓b類繼承a類(考慮),在這種情況下,也可以考慮使用組合。
繼承:xx是***,如狗是動物,可以讓狗繼承動物類三、重寫和super組合:***擁有***,如學生有書,可以讓書這個類作為學生類的屬性
1.重寫概念:子類重新實現父類中的某個方法(對某個方法重新實現),覆蓋父類某個方法以前的做法。
2.使用場合:
1>當兩個類擁有相同屬性和方法的時候,就可以將相同的東西抽取到乙個父類中3. super用法:子類呼叫父類中的某個方法2>當a類有用b類中的部分屬性和方法時,可以考慮讓b類繼承a類。
super處於物件方法中時,那麼就會呼叫父類的物件方法使用場合:子類重寫父類的方法時想要保留父類的一些行為super處於類方法中時,那麼就會呼叫父類的類方法
(子類可以直接呼叫父類中的某個方法 [super 方法名])
4. super重寫方法
- (void)walk // 重寫父類的walk方法
四、多型
1.基本概念
多型在**中的體現,即為多種形態,必須要有繼承,沒有繼承就沒有多型。2.**體現在使用多型是,會進行動態檢測,以呼叫真實的物件方法。
多型在**中的體現即父類指標指向子類物件。
animal *a=[dog new];//animal是父類,dog是子類 , 狗是動物3.優缺點錯誤寫法:dog *d=[animal new]; // 動物不一定是狗,也可能是貓
優點:節省了**,提高了效率。
如果方法或函式引數中使用的是父類型別,則可以使用父類指標傳入父類和子類物件。void feed(animal *a) // 定義喂動物的函式。
解析:上述函式的形參是父類animal,所以此函式可以傳入父類和子類。
侷限性:
父類型別的指標不能呼叫子類的方法。(必須將父類指標強制轉化為子類指標時才能呼叫子類中方法)
animal *a=[dog new];dog *d = (dog *) a; // 將父指標a強制轉化為子類指標d
OC語言 三大特性 繼承與多型
繼承是oc中比較常見的。1 繼承 就是當兩個類擁有相同的屬性和方法時,就可以將相同的東西抽取到乙個父類中。子類可以擁有父類中所有的成員變數和方法。2 繼承的好處 可以抽取重複 節省時間。建立了類之間的關係。3 使用注意 父類必須寫在子類前面 子類不能擁有和父類相同的名稱的成員變數 當呼叫某個方法時,...
OC的三大特性之繼承
繼承的好處 1 抽取重複 2 建立了類之間的關係 3 子類可以擁有父類中的所有成員變數和方法 注意點 1 基本上所有類的根類是nsobject import animal的宣告 inte ce animal nsobject void setage int age int age void setw...
OC中類的三大特性 封裝 繼承和多型
oc是一門物件導向的變成語言,具有面向兌現的最基本的特徵 封裝性 繼承性 和多型性。一.封裝 為何要用封裝?當定義了乙個類時,類中的資料不允許外界訪問,或者允許外界只能讀取不能修改而需要隱藏時,就需要用到 set方法或者get方法。1.oc中的set方法 作用 提供外界設定成員變數值,對引數進行過濾...