码迷,mamicode.com
首页 > 其他好文 > 详细

黑马程序员 10-使用多态的好处和局限性

时间:2014-09-29 19:22:58      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:android   style   blog   http   color   io   os   使用   ar   

———Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ———

使用多态的好处

     如果函数\方法的参数是父类类型,那么父类、子类对象都可以传入。

 1 #import <Foundation/Foundation.h>
 2 //Animal类
 3 @interface Animal : NSObject
 4 - (void)eat;
 5 @end
 6 @implementation Animal
 7 - (void)eat
 8 {
 9     NSLog(@"Animal---吃东西");
10 }
11 @end
12 
13 //Dog类
14 @interface Dog : Animal
15 - (void)run;
16 @end
17 @implementation Dog
18 - (void)run
19 {
20     NSLog(@"Dog---跑");
21 }
22 - (void)eat
23 {
24     NSLog(@"Dog---吃");
25 }
26 @end
27 
28 //Cat类
29 @interface Cat : Animal
30 - (void)eat;
31 @end
32 @implementation Cat
33 - (void)eat
34 {
35     NSLog(@"Cat---吃");
36 }
37 @end
38 
39 //定义一个函数  喂动物
40 void feed(Animal *a)
41 {
42     [a eat];
43 }
44 int main(int argc, const char * argv[])
45 {
46     //函数参数为父类类型,父类和子类对象都可以传入
47     Animal *aa = [Animal new];
48     feed(aa);
49 
50 
51     Dog *d = [Dog new];
52     feed(d);
53     Cat *c = [Cat new];
54     feed(c);
55     
56     //父类对象不能直接调用子类方法,必须强转为子类类型才可以调用子类方法
57     Animal *animal1 = [Dog new];
58     //父类对象不能直接调用子类方法
59     //[animal1 run]
60     Dog *a1 = (Dog *)animal1;
61     [a1 run];
62     return 0;
63 }

 

 

局限性:

1>父类类型的变量  不能直接调用子类特有的方法

2>必须强转为子类类型变量后,才可以调用子类特有的方法

 

黑马程序员 10-使用多态的好处和局限性

标签:android   style   blog   http   color   io   os   使用   ar   

原文地址:http://www.cnblogs.com/xdl745464047/p/4000672.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!