A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 562413895@qq.co 中级黑马   /  2015-7-25 09:46  /  438 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、多态:不同的对象以自己的方式响应相同名称方法的能力。
2、多态的条件:有继承关系、有方法重写(子类把父类的重名方法给重写了);父类的声明变量指向子类对象
代码体现:用父类类型的指针指向了子类对象。
例:Dog *d=[dog new];//Dog为Animal的子类
       Animal  *a=[Dog new];//父类Animal开辟了指向子类Dog的对象a
       [(Dog *)a eat];//将父类Animal对象a强制转化成子类Dog类型,然后调用子类Dog的方法eat
3、多态的优点
简化了编程接口,在类和类之间重用一些习惯性的命名,不用为每一个新加的函数命名一个新名字。这样,编程接口就是一些抽象的行为的集合,从而和实现接口的类区分开来。多态使得代码可以分散在不同的对象中,而不用试图在一个函数中考虑到所有可能的对象。
4、多态的注意点
1)、若存在多态,父类可以访问子类特有的方法
例: Animal  *ani=[Dog new];
        [(Dog *)ani  eat];//可以编译,运行也成功(这里方法eat是子类Dog的方法)
2)、若不存在多态,父类是不可以访问子类特有的方法的
例: Animal  *ani=[Animal new];
        [(Dog *)ani  eat];//可以编译,但是运行不成功

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马