首页 > 其他 > 详细

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

时间:2014-09-29 18:47:30      阅读:223      评论:0      收藏:0      [点我收藏+]

———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-使用多态的好处和局限性

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!