您的位置:首页 > 其它

关于OC运行时机制 多态的理解

2016-06-13 15:05 253 查看
概念:

OC的运行时机制:将数据类型的确定由编译时,推迟到运行时。OC的这种运行时机制使对象的类型及对象的属性和方法在运行时才能确定。

多态:不同对象以自己的方式响应相同的消息的能力叫做多态。举个例子:自然界中的人类(Person)都有一个相同的方法-sing,男人(Man)类属于人类,女人(Wonan)类也属于人类,都继承了人类后,会实现各自的-sing方法。但是自然界中男人和女人的sing的风格又不一样,男人唱的豪迈,女人唱的委婉,但都继承了person的、唱的能力,这就是多态的现象。也就是不同的对象以自己的方式响应相同消息的能力叫多态。也可以说运行时机制是多态的基础。

上代码:

首先创建三个类Person Man Woman 分别在他们的.h .m文件中声明和实现-sing方法

@interface Person :
NSObject

-(void)sing;

@end

@implementation Person

- (void)sing

{

    NSLog(@"人类都会唱歌!!!");

}

@end

@interface Man : Person

-(void)sing;

@end

@implementation Man

-(void)sing

{

    NSLog(@"男人唱歌比较豪迈!!!");

}

@end

@interface Woman : Person

-(void)sing;

@end

@implementation Woman

-(void)sing

{

    NSLog(@"女人唱歌比较婉约!!!");

}

@end

然后在main函数里面调用

int main(int argc,const
char * argv[]) {

    @autoreleasepool {

      

        Person *p = [[Personalloc]init];

        [p sing];

        

        Person *m = [[Manalloc]init];//m在编译时的类型是Person,在运行时的类型的Man,这就体现了OC语言的运行时机制

        [m sing];

        

        Person *w = [[Womanalloc]init];

        [w sing];

    }

    return 0;

}

打印结果:

2016-06-13 15:03:02.960 运行时多态[967:786871]人类都会唱歌!!!

2016-06-13 15:03:02.961 运行时多态[967:786871]男人唱歌比较豪迈!!!

2016-06-13 15:03:02.961 运行时多态[967:786871]女人唱歌比较婉约!!!

PS:感觉有用就顶一下呗
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息