多态:

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

  那多态到底是什么呢?

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

  动态类型:程序直到运行时才确定对象的类型。

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

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

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

  [obj eat];

  虽然该obj前面是Animal类,也就是说它被声明是Animal类的一个指针,但是在运行 [obj eat];这行时才知道它其实是Dog类型的,该obj指针实际上却是指向子类Dog的对象。也就说它在运行时,实际上调用的是Dog类里的那个eat方法。这就是多态。

OC中动态能力的原理:

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

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

博客参考:点击进入

最新文章

  1. SQL Server存储过程
  2. 制作手机相册 全屏滚动插件fullpage.js
  3. jQuery Dialog and timepicker显示层的问题
  4. NSBundle 的理解和 mainBundle
  5. matlab 和 origin作图去除白边,字体调节
  6. SharePoint 2010遍历文档库中所有的文件,文件夹
  7. Lucene分页-----SearcherAfter
  8. Oracle基础学习5-- Oracle权限之”角色”
  9. jQuery slideDown()--向下滑动
  10. java学习笔记之日期日历类
  11. 【MySQL】查看支持的引擎show engines;
  12. JAVA_SE基础——6.标识符&关键字
  13. 《万能数据库查询分析器》实现使用SQL语句直接高效地访问文本文件
  14. Jenkins+Ansible+Gitlab自动化部署三剑客-gitlab本地搭建
  15. Spark项目之电商用户行为分析大数据平台之(三)大数据集群的搭建
  16. Jquery——动画效果
  17. 多路I/O复用(select、poll、epoll)的比较学习:
  18. List of Chromium Command Line Switches(命令行开关集)——官方指定命令行更新网址
  19. [ZJOI2008]生日聚会 BZOJ1037 dp
  20. window对象的事件:onresize、onpageshow、onload

热门文章

  1. arm+linux 裸机环境搭建之安装工具篇(eclipse)
  2. 【MFC学习笔记-作业9-基于单击响应的计算平均成绩】【】
  3. JS赋值传递的问题
  4. zoj 1067
  5. yum mysql
  6. asp.net自动打卡、签到程序
  7. Address already in use: JVM_Bind<null>:8080tomcat启动不了的问题
  8. javascript 数据结构和算法读书笔记 > 第三章 列表
  9. MediaPlayer类——播放视频和音乐
  10. VS2010 CLR20r3 devenv.exe 错误的解决--vs重启解决方案