黑马程序员技术交流社区

标题: 面向对象编程之多态 [打印本页]

作者: 562413895@qq.co    时间: 2015-7-25 09:46
标题: 面向对象编程之多态
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];//可以编译,但是运行不成功




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2