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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小月格子猫 中级黑马   /  2014-9-11 20:45  /  1681 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多态是不是就指父类的指针指向子类的对象是不是就叫多态,有没有更深层的理解

10 个回复

倒序浏览
是的,多态即多种形态,,处于继承下,
回复 使用道具 举报
不同对象对同一消息的不同响应.子类可以重写父类的方法
多态就是允许方法重名 参数或返回值可以是父类型传入或返回。
回复 使用道具 举报
虽然继承了父类的所有东西,但是得有活出自己的个性
回复 使用道具 举报
我觉得通俗点来说就是:比如给你一块橡皮泥(最初是的形状是圆形,基类),通过我们用外力(强制类型转换)来动态变成多种形状,给我们不同的外形视觉
回复 使用道具 举报
说下个人的见解:如果要在深入一点的话,可以理解为在编译时可以是任何类型,而在运行的时候,将会检测其真实的类型,也就是常说的运行时机制(runtime)
例如 你可以用 id 来指向任意以一个内存地址,该内存地址所对应的存储空间可以是任意类型的对象,在编译的时候不会由任何问题,而在程序运行的时候将会检测对象的真实类型
这个就是多态的体现
id obj = [NSArray array]; //指向一个数组
运行时检测其真是类型是数组
id obj = [[Person alloc] init]; 指向一个Person对象
运行时检测其真是类型是Person类
当然这只是举例都是伪代码,具体的你可以上网查下资料
回复 使用道具 举报
入学考试就有这么一题目
回复 使用道具 举报
学C++的时候是这么理解的,一个函数有多个版本,每个版本的参数数量和参数类型不同,给对象发同一个消息,附带不同的参数,对象会响应不同的行为。OC还没看到这里。。。。
回复 使用道具 举报
多态是必须在继承的基础上的,比如“狗一定是动物”,把动物的指针指向狗这个实例对象,Animal *a=[Dog new]。多态其实还是有用的,比如存在一个类外函数void feed(Animal *a),多态的出现就免去了要写两个函数void feed(Dog *a)、void feed(Cat *a),那么只需要利用多态就可以直接传入实例对象了。
回复 使用道具 举报
父类引用 指向子类对象
回复 使用道具 举报
一般情况下,多态和继承是在一起的,只有继承实现的情况下,多态才能实现,多态在ios中的应用很广泛,例如一些UI控件
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马