码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-03-08 20:07:02      阅读:168      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!