首页 > 其他 > 详细

QF——OC的多态,动态绑定及实现原理

时间:2015-03-08 20:04:40      阅读:408      评论:0      收藏:0      [点我收藏+]

多态:

  封装,继承,多态是面向对象的三大特征。

  那多态到底是什么呢?

  多态:允许不同的类定义相同的方法,OC能自己判断,不会混乱。

  动态类型:程序直到运行时才知道对象所属的类。

  动态绑定:基于动态类型,程序直到运行时才能确定要执行的方法。

 

  多态:父类的指针可以指向子类的对象。这句话一定要深刻理解,请看几行代码:

  Animal * obj = [[Dog alloc] init]; 

  [obj eat];

  虽然该obj前面是Animal类,也就是说它被声明是Animal类的一个指针,但是在运行 [obj eat];这行时,该obj指针实际上却是指向子类Dog的对象。也就说它在运行时,实际上调用的是Dog类里的那个eat方法。这就是多态。简单地说,虽然obj前面被声明是Animal类型的,但obj在定义的时候却是Dog类型的,它实际是什么类型,就会调用自己类里重写的方法。

 

 

OC中动态能力的原理:

  OC中的每个对象默认都有一个属性,即isa指针。它指向了一个“类对象”(object-class),这个对象是在编译的时候由编译器生成的。它里面存储了类的信息,专门用来描述类。当程序运行时,它作为类的一个实例的属性,它会动态的告诉对象“你属于哪个类,你有什么方法等”。。。

 

多态可以提高代码的灵活性和复用度。

 

博客参考:点击进入

QF——OC的多态,动态绑定及实现原理

原文:http://www.cnblogs.com/wangerxiansheng/p/4322099.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!