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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© alanwangke213 中级黑马   /  2015-8-3 17:15  /  461 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

按照 从柳柳桑那下载的《黑马之IOS葵花宝典.pdf》里面介绍的多态的概念是这样的:

多态:不同的对象以自己的方式响应父类同名的方法,这就是多态
它的实质就是:父类的指针指向了子类的对象
当然,这个得子类对象继承了父类的方法重写后才有的yo~
1.在父类对象可以调用子类对象的同名方法
        Animal * ani_1 = [Dog new];
        [ani_1 run];  //可以执行

        父类对象调用子类不同命的方法时:
        Animal * ani_1 = [Dog new];
        //[ani_1 bark];          //编译时会报错
        [(Dog *)ani_1 bark]; //调用成功

        但是:
        Animal * ani_2 = [Animal new];
        //[ani_2 bark];          //编译时会报错
        [(Dog *)ani_2 bark]; //编译时不会出错,但是运行错误。

就是说Animal里面声明实现了run方法的话,Dog 、 Cat 、 Person里面重新实现该方法,用Animal类对象指向了Dog、Cat、Person对象。然后将指针强制类型装换成对应的指针类型后就能分别调用三个不同子类的run方法了。

0 个回复

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