黑马程序员技术交流社区

标题: 关于多态该怎么理解呢? [打印本页]

作者: 小月格子猫    时间: 2014-9-11 20:45
标题: 关于多态该怎么理解呢?
多态是不是就指父类的指针指向子类的对象是不是就叫多态,有没有更深层的理解
作者: 王绍明    时间: 2014-9-16 18:25
是的,多态即多种形态,,处于继承下,
作者: _Miao    时间: 2014-9-16 20:01
不同对象对同一消息的不同响应.子类可以重写父类的方法
多态就是允许方法重名 参数或返回值可以是父类型传入或返回。
作者: zzyy3321    时间: 2014-9-16 20:14
虽然继承了父类的所有东西,但是得有活出自己的个性
作者: 明天过后1    时间: 2014-9-16 23:36
我觉得通俗点来说就是:比如给你一块橡皮泥(最初是的形状是圆形,基类),通过我们用外力(强制类型转换)来动态变成多种形状,给我们不同的外形视觉
作者: wanyiyuan    时间: 2014-9-18 22:44
说下个人的见解:如果要在深入一点的话,可以理解为在编译时可以是任何类型,而在运行的时候,将会检测其真实的类型,也就是常说的运行时机制(runtime)
例如 你可以用 id 来指向任意以一个内存地址,该内存地址所对应的存储空间可以是任意类型的对象,在编译的时候不会由任何问题,而在程序运行的时候将会检测对象的真实类型
这个就是多态的体现
id obj = [NSArray array]; //指向一个数组
运行时检测其真是类型是数组
id obj = [[Person alloc] init]; 指向一个Person对象
运行时检测其真是类型是Person类
当然这只是举例都是伪代码,具体的你可以上网查下资料
作者: 萧雨流风    时间: 2014-9-21 14:19
入学考试就有这么一题目
作者: 崔石炫    时间: 2014-9-21 14:39
学C++的时候是这么理解的,一个函数有多个版本,每个版本的参数数量和参数类型不同,给对象发同一个消息,附带不同的参数,对象会响应不同的行为。OC还没看到这里。。。。
作者: AngleMGG    时间: 2014-9-21 19:46
多态是必须在继承的基础上的,比如“狗一定是动物”,把动物的指针指向狗这个实例对象,Animal *a=[Dog new]。多态其实还是有用的,比如存在一个类外函数void feed(Animal *a),多态的出现就免去了要写两个函数void feed(Dog *a)、void feed(Cat *a),那么只需要利用多态就可以直接传入实例对象了。
作者: 水了个淼    时间: 2014-9-21 20:59
父类引用 指向子类对象
作者: 闫跃文    时间: 2014-9-21 22:27
一般情况下,多态和继承是在一起的,只有继承实现的情况下,多态才能实现,多态在ios中的应用很广泛,例如一些UI控件




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