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

多态的实现

时间:2017-03-15 13:36:41      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:实现   原理   强制   实例化   style   nbsp   传统   检查   font   

1.如何实现多态

  • Animal是父类,子类有Cat 和 Dog,子类分别重写了父类中的eat方法;实例化对象的时候可以用下面的方法:
Animal *animal = nil;

//实例化猫的对象
animal = [Cat new];
[animal eat];

//实例化狗的对象
animal = [Dog new];
[animal eat];

2.多态的原理

  • 动态绑定:
    • 动态类型能使程序直到执行时才确定对象的真实类型
    • 动态类型绑定能使程序直到执行时才确定要对那个对象调用的方法
  • OC不同于传统程序设计语言,它可以在运行时加入新的数据类型和新的程序模块:动态类型识别,动态绑定,动态加载
  • id类型:通用对象指针类型,弱类型,编译时不进行具体类型检查

3.多态的注意点

  • 1)如果存在多态,父类是可以访问子类特有的方法
假设 子类 Dog 有一个特有的方法bark
[dog bark];
Animal *an2 = [Dog new];
[(Dog*)an2 bark]; //把父类的指针,强制类型转换
  • 2)如果不存在多态,父类是不可以访问子类特有的方法的
Animal *an3 = [Animal new];
[(Dog*)an3 bark]; //错误的,不能强制转换

 

多态的实现

标签:实现   原理   强制   实例化   style   nbsp   传统   检查   font   

原文地址:http://www.cnblogs.com/xufengyuan/p/6553741.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!