国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

【學(xué)習(xí)筆記】【OC語言】多態(tài)

2019-11-14 18:41:05
字體:
供稿:網(wǎng)友

1.多態(tài)的基本概念
某一類事物的多種形態(tài)
OC對象具有多態(tài)性

2.多態(tài)的體現(xiàn)
Person *p = [Student new];
p->age = 100;
[p walk];
子類對象賦值給父類指針
父類指針訪問對應(yīng)的屬性和方法

3.多態(tài)的好處
用父類接收參數(shù),節(jié)省代碼

4.多態(tài)的局限性
不能訪問子類的屬性(可以考慮強(qiáng)制轉(zhuǎn)換)

5.多態(tài)的細(xì)節(jié)
動態(tài)綁定:在運(yùn)行時根據(jù)對象的類型確定動態(tài)調(diào)用的方法

6.代碼

  1 #import <Foundation/Foundation.h>  2   3 /*  4  多態(tài)  5  1.沒有繼承就沒有多態(tài)  6  2.代碼的體現(xiàn):父類類型的指針指向子類對象  7  3.好處:如果函數(shù)/方法參數(shù)中使用的是父類類型,可以傳入父類、子類對象  8  4.局限性:  9  1> 父類類型的變量 不能 直接調(diào)用子類特有的方法。必須強(qiáng)轉(zhuǎn)為子類類型變量后,才能直接調(diào)用子類特有的方法 10  */ 11  12 // 動物 13 @interface Animal : NSObject 14 - (void)eat; 15 @end 16  17 @implementation Animal 18 - (void)eat 19 { 20     NSLog(@"Animal-吃東西----"); 21 } 22 @end 23  24 // 25 @interface Dog : Animal 26 - (void)run; 27 @end 28  29 @implementation  Dog 30 - (void)run 31 { 32     NSLog(@"Dog---跑起來"); 33 } 34 - (void)eat 35 { 36     NSLog(@"Dog-吃東西----"); 37 } 38 @end 39  40 // 41 @interface Cat : Animal 42  43 @end 44  45 @implementation Cat 46 - (void)eat 47 { 48     NSLog(@"Cat-吃東西----"); 49 } 50 @end 51  52 // 這個函數(shù)是專門用來喂動畫 53 //void feed(Dog *d) 54 //{ 55 //    [d eat]; 56 //} 57 // 58 //void feed2(Cat *c) 59 //{ 60 //    [c eat]; 61 //} 62 // 63  64 // 如果參數(shù)中使用的是父類類型,可以傳入父類、子類對象 65 void feed(Animal *a) 66 { 67     [a eat]; 68 } 69  70 int main() 71 { 72     // NSString *d = [Cat new]; 73     // [d eat]; 74      75     /* 76     Animal *aa = [Dog new]; 77     // 多態(tài)的局限性:父類類型的變量 不能 用來調(diào)用子類的方法 78     //[aa run]; 79      80     // 將aa轉(zhuǎn)為Dog *類型的變量 81     Dog *dd = (Dog *)aa; 82      83     [dd run]; 84     */ 85      86     //Dog *d = [Dog new]; 87      88     //[d run]; 89      90     /* 91     Animal *aa = [Animal new]; 92     feed(aa); 93      94     Dog *dd = [Dog new]; 95     feed(dd); 96      97     Cat *cc = [Cat new]; 98     feed(cc); 99      */100     101     /*102     // NSString *s = [Cat new];103     Animal *c = [Cat new];104     105     106     NSObject *n = [Dog new];107     NSObject *n2 = [Animal new];108     109     110     // 多種形態(tài)111     //Dog *d = [Dog new]; // Dog類型112     113     // 多態(tài):父類指針指向子類對象114     Animal *a = [Dog new];115     116     // 調(diào)用方法時會檢測對象的真實(shí)形象117     [a eat];118     */119     return 0;120 }

 

 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 静安区| 察哈| 德惠市| 乾安县| 滕州市| 博兴县| 昔阳县| 德保县| 牙克石市| 象州县| 内江市| 吉首市| 颍上县| 乌拉特中旗| 会东县| 上栗县| 吴桥县| 宁远县| 阳高县| 商城县| 青川县| 德令哈市| 綦江县| 闻喜县| 苗栗县| 土默特左旗| 喀什市| 南投县| 自治县| 望谟县| 泸溪县| 平顺县| 楚雄市| 永定县| 乌恰县| 彰武县| 双峰县| 开封市| 上饶县| 太仆寺旗| 邯郸市|