OC面向?qū)ο蟆鄳B(tài)

OC面向?qū)ο蟆鄳B(tài)

OC面向?qū)ο蟆鄳B(tài)

OC面向?qū)ο蟆鄳B(tài)

一排龄、基本概念

多態(tài)在代碼中的體現(xiàn),即為多種形態(tài)茶鹃,必須要有繼承涣雕,沒有繼承就沒有多態(tài)。

在使用多態(tài)是闭翩,會(huì)進(jìn)行動(dòng)態(tài)檢測(cè)挣郭,以調(diào)用真實(shí)的對(duì)象方法。

多態(tài)在代碼中的體現(xiàn)即父類指針指向子類對(duì)象疗韵。

Animal類的聲明


Animal類的實(shí)現(xiàn)


Dog類繼承自Animal類


Dog類的實(shí)現(xiàn)


測(cè)試程序:


二兑障、使用注意

代碼分析:

Dog *d=[[Animal? alloc] init];? 動(dòng)物是一條狗?語(yǔ)義正確嗎蕉汪?

NSString *str=[Dog? new];? ? 狗是一個(gè)字符串流译?正確嗎?

Oc語(yǔ)言是一門弱語(yǔ)法的語(yǔ)言者疤,編譯的時(shí)候并不會(huì)報(bào)錯(cuò)福澡,所以這就要求我們?cè)趯?shí)際的開發(fā)過程中一定要按照既定的規(guī)范來寫代碼,不要出現(xiàn)狗是一個(gè)字符串這樣的問題驹马。

多態(tài)的好處:

需要一個(gè)新的函數(shù)專門用來喂狗

Void feed(Dog *d)

{

[d? eat];

}

如果這個(gè)時(shí)候也需要喂貓革砸,那就應(yīng)該重寫新一個(gè)新的函數(shù)

Void feed(Cat *c)

{

[c? eat];

}

而狗和貓實(shí)際上都繼承自動(dòng)物這個(gè)類,在這里就可以使用多態(tài)來簡(jiǎn)化代碼了糯累。

這里只需要把函數(shù)的參數(shù)寫成是Animal *類型的算利,那么Dog和Cat類型的對(duì)象就都可以傳入進(jìn)來。

調(diào)用的時(shí)候直接改變參數(shù)就可以了泳姐。

多態(tài)的局限性:父類類型的指針變量不能直接調(diào)用子類特有的方法效拭。

不建議的做法~

Animal *a=[[Dog alloc] init];

[a run];//在Animal類中沒有run方法,這里調(diào)用了狗對(duì)象的方法胖秒。

解決方法:可以將a強(qiáng)制轉(zhuǎn)換為Dog*類型的變量缎患,如下:

Dog *d=(Dog *)a;//使用強(qiáng)制轉(zhuǎn)換,這里a和d指向的是同一個(gè)狗對(duì)象

三阎肝、多態(tài)使用總結(jié)

(1)沒有繼承就沒有多態(tài)

(2)代碼的體現(xiàn):父類類型的指針指向子類對(duì)象

(3)好處:如果函數(shù)方法參數(shù)中使用的是父類類型挤渔,則可以傳入父類和子類對(duì)象,而不用再去定義多個(gè)函數(shù)來和相應(yīng)的類進(jìn)行匹配了盗痒。

(4)局限性:父類類型的變量不能直接調(diào)用子類特有的方法,如果必須要調(diào)用,則必須強(qiáng)制轉(zhuǎn)換為子類特有的方法俯邓。

四骡楼、字符串補(bǔ)充內(nèi)容

@“234”字符串也是一個(gè)對(duì)象,屬于NSString這個(gè)類稽鞭。下面是對(duì)字符串對(duì)象的一些代碼說明:


字符串對(duì)象的length方法:計(jì)算的是字符串的字?jǐn)?shù)鸟整,而不是像strlen函數(shù)那樣,計(jì)算的是字符數(shù)朦蕴。如“哈ha123”length得出的結(jié)果是6篮条,返回unsigned long類型,而strlen函數(shù)得出的結(jié)果是8吩抓,因?yàn)橐粋€(gè)漢字占3個(gè)字節(jié)涉茧。

提示:字?jǐn)?shù)也包括空格。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末疹娶,一起剝皮案震驚了整個(gè)濱河市伴栓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌雨饺,老刑警劉巖钳垮,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異额港,居然都是意外死亡饺窿,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門移斩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肚医,“玉大人,你說我怎么就攤上這事叹哭∪趟危” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵风罩,是天一觀的道長(zhǎng)糠排。 經(jīng)常有香客問我,道長(zhǎng)超升,這世上最難降的妖魔是什么入宦? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮室琢,結(jié)果婚禮上乾闰,老公的妹妹穿的比我還像新娘。我一直安慰自己盈滴,他們只是感情好涯肩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布轿钠。 她就那樣靜靜地躺著,像睡著了一般病苗。 火紅的嫁衣襯著肌膚如雪疗垛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天硫朦,我揣著相機(jī)與錄音贷腕,去河邊找鬼。 笑死咬展,一個(gè)胖子當(dāng)著我的面吹牛泽裳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播破婆,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼涮总,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了荠割?” 一聲冷哼從身側(cè)響起妹卿,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蔑鹦,沒想到半個(gè)月后夺克,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嚎朽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年铺纽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哟忍。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡狡门,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出锅很,到底是詐尸還是另有隱情其馏,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布爆安,位于F島的核電站叛复,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏扔仓。R本人自食惡果不足惜褐奥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望翘簇。 院中可真熱鬧撬码,春花似錦、人聲如沸版保。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至叫胁,卻和暖如春慷吊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背曹抬。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留急鳄,地道東北人谤民。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像疾宏,于是被迫代替她去往敵國(guó)和親张足。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容