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

概念:

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:感觉有用就顶一下呗



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值