iOS基礎(oc) 繼承

2021-07-03 18:33:31 字數 3067 閱讀 4066

----- 知之部落格 期待與您交流! -------

一 成員訪問型別

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中只允許每...