黑马程序员技术交流社区

标题: 多态总结 [打印本页]

作者: ,。?!    时间: 2015-9-15 20:59
标题: 多态总结
一. 多态
1. 多态概念,定义
什么是多态:
    多态就是某一类事物的多种形态;

官方一点说:
    多态就是,不同的对象以自己的方式响应父类同名的方法,这就是多态;

代码中体现出来:
    父类的指针指向了子类的对象;Animal *ani = [Dog new];

多态条件:
    1.有继承关系
    2.有方法的重写


2.多态代码实现:
//实例化猫的对象
Animal *animal  = [Cat new]; //父类的指针指向子类对象;
[animal eat];

//实例化狗的对象
animal = [Dog new]; //父类的指针指向子类对象。
[animal eat];



3.多态注意点:
1) 如果存在多态,父类是可以访问子类特有的方法
假设子类Dog 有一个特有的方法bark
Animal *an2 = [Dog new];         //编译时看等号左边,运行时看等号右边
[(Dog*)an2 bark]; //把父类的指针,强制类型转换

2) 如果不存在多态,父类是不可以访问子类特有的方法的
Animal *an3 = [Animal new];
[(Dog*)an3 bark]; //错误的,这里只是骗编译器,运行一定报错.





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