关于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:感觉有用就顶一下呗
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:感觉有用就顶一下呗
相关文章推荐
- C#与.net高级编程 C#的多态介绍
- C#中面向对象编程机制之多态学习笔记
- C#中的多态深入理解
- C#中多态、重载、重写区别分析
- 设计引导--一个鸭子游戏引发的设计理念(多态,继承,抽象,接口,策略者模式)
- C# 面向对象三大特性:封装、继承、多态
- javascript每日必学之多态
- c#基础学习之多态
- 动态语言、动态类型语言、静态类型语言、强类型语言、弱类型语言介绍
- PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
- 从汇编看c++中多态的应用
- javascript 面向对象全新理练之继承与多态
- Java多态的使用注意事项
- C#使用虚拟方法实现多态
- 实例讲解PHP面向对象之多态
- C#中多态现象和多态的实现方法
- C++基础之this指针与另一种“多态”
- 深入解析C++中的虚函数与多态
- C++多态的实现及原理详细解析
- PHP5中实现多态的两种方法实例分享