多态的概念和条件

多态的概念和条件 

1、什么是多态?

什么是多态:多态就是某一类事物的多种形态 

程序中的多态:不同的对象以自己的方式响应相同名称方法的能力称为多态 

2、多态的条件

多态的条件:有继承关系、有方法重写

父类的声明变量指向子类对象。

//代码体现:用父类类型的指针指向了子类对象,这就是多态 

狗 *g = [狗 new];
动物 *a = [狗 new];
猫 *c = [猫 new]; 
动物 *a = [猫 new];

3、多态的优点

多态的主要好处就是简化了编程接口。它容许在类和类之间重用一些习惯性的命名,而不用 为每一个新加的函数命名一个新名字。这样,编程接口就是一些抽象的行为的集合,从而和实现 接口的类的区分开来。

多态也使得代码可以分散在不同的对象中而不用试图在一个函数中考虑到所有可能的对象。 这样使得您的代码扩展性和复用性更好一些。当一个新的情景出现时,您无须对现有的代码进行 改动,而只需要增加一个新的类和新的同名方法。 


多态的实现 

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]; //
错误的,不能强制转换







转载于:https://my.oschina.net/TaciturnKnightYQ/blog/537194

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值