OC_多态

来源:互联网 发布:特效照片制作软件 编辑:程序博客网 时间:2024/04/30 19:16

多态:多种形态
来自不同类的对象可以定义共享相同名称的方法(不同类名,相同方法名)
id类型可以存储任何对象。

     父类指针,指向子类对象     调用方法时,会检测对象的真实类型

代码示例:

@interface Animal : NSObject-(void)run;@end@implementation Animal-(void)run{    NSLog(@"跑");}
@interface Dog ()-(void)run;@end@implementation Dog-(void)run{    NSLog(@"--dog run");}@end
        Animal * d = [Dog new];  //父类指针,指向子类对象        [d run];//调用方法时,会检测对象的真实类型

这里写图片描述

//参数使用的是父类对象,可以传入父类、子类对象void feed (Animal *a){    [a run];}
//没有继承就没有多态        Dog * d = [Dog new];        Cat * s = [Cat new];        feed(d);        feed(s);        //父类类型的指针指向子类对象        Animal * aa = [Dog new];        //[aa run]; /*多态的局限性,父类类型的变量,不能用来调用子类的方法*/        [(Dog*)aa run];
1 0
原创粉丝点击