首页 > 代码库 > 黑马程序员 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-使用多态的好处和局限性
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。