首页 > 代码库 > 黑马程序员 10-使用多态的好处和局限性

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

———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 @end12 13 //Dog类14 @interface Dog : Animal15 - (void)run;16 @end17 @implementation Dog18 - (void)run19 {20     NSLog(@"Dog---跑");21 }22 - (void)eat23 {24     NSLog(@"Dog---吃");25 }26 @end27 28 //Cat类29 @interface Cat : Animal30 - (void)eat;31 @end32 @implementation Cat33 - (void)eat34 {35     NSLog(@"Cat---吃");36 }37 @end38 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-使用多态的好处和局限性