你的位置:首页 > 操作系统

[操作系统]【学习笔记】【OC语言】多态


1.多态的基本概念
某一类事物的多种形态
OC对象具有多态性

2.多态的体现
Person *p = [Student new];
p->age = 100;
[p walk];
子类对象赋值给父类指针
父类指针访问对应的属性和方法

3.多态的好处
用父类接收参数,节省代码

4.多态的局限性
不能访问子类的属性(可以考虑强制转换)

5.多态的细节
动态绑定:在运行时根据对象的类型确定动态调用的方法

6.代码

 1 #import <Foundation/Foundation.h> 2  3 /* 4  多态 5  1.没有继承就没有多态 6  2.代码的体现:父类类型的指针指向子类对象 7  3.好处:如果函数\方法参数中使用的是父类类型,可以传入父类、子类对象 8  4.局限性: 9  1> 父类类型的变量 不能 直接调用子类特有的方法。必须强转为子类类型变量后,才能直接调用子类特有的方法 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 // 这个函数是专门用来喂动画 53 //void feed(Dog *d) 54 //{ 55 //  [d eat]; 56 //} 57 // 58 //void feed2(Cat *c) 59 //{ 60 //  [c eat]; 61 //} 62 // 63  64 // 如果参数中使用的是父类类型,可以传入父类、子类对象 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   // 多态的局限性:父类类型的变量 不能 用来调用子类的方法 78   //[aa run]; 79    80   // 将aa转为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   // 多种形态111   //Dog *d = [Dog new]; // Dog类型112   113   // 多态:父类指针指向子类对象114   Animal *a = [Dog new];115   116   // 调用方法时会检测对象的真实形象117   [a eat];118   */119   return 0;120 }

 

 



湖南旅游攻略大全湖南旅游路线推荐湖南自驾游攻略湖南旅游线路大全什么时候去湖南旅游最好2015五一番禺去哪看花?番禺五一哪里有花展? 2015番禺宝墨园玫瑰花花期多长?宝墨园玫瑰花能开到几月? 2015番禺宝墨园玫瑰花最佳观赏期?宝墨园玫瑰花几月最好看? 2015广州去哪看玫瑰花?番禺宝墨园玫瑰花好看吗? 南宁大明山风景区什么时间最好玩?武鸣大明山四季游玩特色? 探春闻香韵 江苏最全赏梅地图出炉 南宁大明山一日游行程安排?武鸣大明山游玩需要多少时间? 南宁大明山旅游攻略?南宁武鸣大明山一日游攻略? 宝晶宫小孩多高免费?英德宝晶宫儿童票价格? 宝晶宫一日游费用?英德宝晶宫门票多少钱? 宝晶宫门票预约电话?英德宝晶宫预订优惠多少? 李小龙乐园坐车要多久?顺德李小龙乐园怎么坐车? L签怎么自由行? 坐火车去深圳然后怎么去香港? 香港哪个海滩好玩一点? 去香港什么时候入关人最少? 08055U220JAT4A Datasheet 08055U220JAT4A Datasheet 08055U270FAT9A Datasheet 08055U270FAT9A Datasheet AQ12EA910FAJME Datasheet AQ12EA910FAJME Datasheet 牡丹江到香港旅游团价格 牡丹江到香港旅游团价格 牡丹江到香港旅游团价格 武汉香港游价格 武汉香港游价格 武汉香港游价格 沈阳港澳游价格 沈阳港澳游价格 沈阳港澳游价格