----- 知之部落格 期待與您交流! -------
一 成員訪問型別
private:私有成員,不能被外部函式訪問(使用),也不能被子類繼承;
protected:保護成員,不能被外部函式訪問,可以被子類繼承;
public:公有成員,可以被外部函式訪問,也可以被子類繼承。
oc中,所有的方法(訊息),都是公有的。
二 重寫(繼承的另一部分)
重寫:子類可以從父類繼承方法,但是有時候父類的方法不適合子類,子類就可以寫乙個自己的同名方法,覆蓋掉父類的同名方法。重寫的時候,在子類的.h中不必重新宣告,直接在.m中寫實現就可以。
//父類宣告檔案
#import @inte***ce father : nsobject
-(void)run;
-(void)jump;
@end
//父類實現檔案
#import "father.h"
@implementation father
-(void)run
-(void)jump
@end
//子類宣告檔案
#import "father.h"
@inte***ce son : father
@end
//子類實現檔案
#import "son.h"
@implementation son
-(void)jump
@end
子類重寫父類的jump方法,不需要重新宣告。
同乙個方法,不同的實現,稱為多型。重寫是多型的一種。
繼承的好處:
1)建立大量的相似類的時候,可以節省工作量。
2)使用框架中的類,或已經寫好的類,繼承該類,生成乙個派生類,比原類更好用。
注意:nsstring、nsarray、nsdictionary都是不能夠繼承的。
3、虛方法
oc的方法都是虛方法
1)父類的指標可以指向子類的物件
son * son = [[son alloc] init];
father * p = son;
上面p和son都指向子類的物件;呼叫方法時,不看指標,看物件,物件的位址指向什麼物件,就呼叫什麼方法,稱為虛方法。
2)呼叫方法時,不看指標看物件,這樣的方法叫做虛方法。虛方法的好處:可以描述不同事物被相同事件觸發,產生不同的響應(結果)。體會下面的例子
動物的父類宣告與實現
//動物類宣告
#import @inte***ce animal : nsobject
-(void)bebeaten;
@end
//動物類實現
#import "animal.h"
@implementation animal
-(void)bebeaten
@end
子類(狗)的宣告與實現
#import "animal.h"
@inte***ce dog : animal
@end
#import "dog.h"
@implementation dog
//該方法在父類已經宣告,所以子類不需要重複宣告
-(void)bebeaten
@end
子類(貓)的宣告與實現
#import "animal.h"
@inte***ce cat : animal
@end
#import "cat.h"
@implementation cat
//該方法在父類已經宣告,所以子類不需要重複宣告
-(void)bebeaten
@end
人類的宣告與實現
#import #import "animal.h"
@inte***ce human : nsobject
//呼叫該方法,此處只寫乙個父類的指標就可以,這是利用了父類的虛方法;
//不然,需要寫多個方法實現:beatanimal:(dog *)dog;beatanimal:(cat *)cat;打不同的動物需要傳不同的物件,所以利用虛方法、父類的指標是非常方便的
-(void)beatanimal:(animal*)animal;
@end
#import "human.h"
@implementation human
-(void)beatanimal:(id)animal
@end
dog * dog = [[dog alloc] init];
cat * cat = [[cat alloc] init];
human * xiaoming = [[human alloc] init];
[xiaoming beatanimal:dog];
[xiaoming beatanimal:cat];
//輸出:
//2013-09-29 15:51:00.604 oc[752:303] human beat the dog
//2013-09-29 15:51:00.619 oc[752:303] wang,wang...
//2013-09-29 15:51:00.620 oc[752:303] human beat the cat
//2013-09-29 15:51:00.621 oc[752:303] miao,miao...
IOS之路 OC之繼承
沒有父類的類位於類層次結構的頂端,稱為根類,可以將類稱為子類和父類 超類 在子類中使用例項變數時,需要在介面宣告中宣告,而不能在實現部門宣告,在實現部分宣告和合成 synthesize 的都是私有的。為了簡潔起見,把 寫在乙個檔案裡 import inte ce classa nsobject vo...
OC基礎5 繼承
1 根類即是最頂層的類,父類也可稱為超類 2 關於例項變數的繼承 只有宣告在 inte ce部分的例項變數才能被子類繼承 包括在類名後馬上使用花括號宣告的變數和使用 property宣告的變數,都可以繼承。如果完全宣告在 implementation部分的變數,則屬於私有變數,需要提供方法才能訪問。...
iOS開發之OC語法基礎(二) 繼承和例項化
1 掌握物件導向程式設計特性 繼承 2 掌握oc中的自定義初始化方法 3 掌握oc中的便利構造器的寫法 1 oc中,乙個類可以繼承另外乙個類 2 被繼承的類稱為父類 super class 或超類 3 繼承的類稱為子類 subclass 4 子類可以直接使用父類的部分特徵和行為 注意 oc中只允許每...