黑马程序员技术交流社区
标题:
多态相关
[打印本页]
作者:
曹昌豪
时间:
2012-5-22 18:58
标题:
多态相关
学多态时有转型的情况,也知道怎么转型,但是今天看到一个问题,问什么时候用向上转型,什么时候用向下转型呢,这个就不知道了,概念太差,请童鞋们给个答案!!!!感激
作者:
魏涞
时间:
2012-5-22 19:59
向上转型:提高扩展性,同时影藏了子类的类型和特有方法。是一种限定和影藏。
向下转型:需要使用到子类的特有成员,向下转型的前提是进行类型判断,用到instanceof
作者:
乔建国
时间:
2012-5-22 20:01
把对某个对象的引用视为对其基类引用的做法被称为“向上转型”。
这主要是由于子类的对象可以看成是基类的对象的原因而得来的,也就是具有is-a关系。
基类可以接收发给导出类的任何消息,因为二者有完全相同的接口,我们只需要
从导出类向上转型,永远不需要知道正在处理的对象的确切类型,这也就是多态性决
定的。利用多态性,具有同样方法名和方法特征的方法根据调用方法的对象的类型,
可以产生不同的动作,这极大地增加了程序员的表达能力。
将基类的引用强制转换为子类类型就叫做向下转型;
继承可以确保所有的子类类具有基类的接口,且绝对不会少。那么子类除了有父类的
方法,也可以有自己的额外的新方法(这些方法是基类所没有的),那么一旦向上转
型,就不能调用子类中的新方法,那么要调用子类独有的方法时当然就需要向下转型了。
作者:
蒋映辉
时间:
2012-5-22 20:01
我算是知道了 你就是来刷分的 亏我还在那尽心尽力的给你回答。。。。。。
作者:
黑马陈旭东
时间:
2012-5-22 20:29
父类引用指向子类对象。属于向上转型,作用它可以调用父类跟子类共有的方法。换句话说,它可以指挥同一类型的所有对象工作。
向下转型就是当你想使用子类自己特有方法的时候时才用到!
作者:
刘聪
时间:
2012-5-22 21:17
为什么我回答了那么一大块,提交了却说要审核,而且不见了!!!我回答了有1000多字了,请管理员给个答复呗!!!
作者:
刘聪
时间:
2012-5-23 08:48
谢谢,本来想重写的,但是又怕写的没有开始那么完善了(边想边写很费时的),就没有重写了。谢谢管理员,也希望楼主明白了问题!
作者:
李斌
时间:
2012-5-23 09:05
简单一句话,当需要调用同父类的共有方法或者子类覆盖掉的方法时,让父类的引用指向子类对象 向上转型;
当需要子类的特有内容时 让子类的引用重新指向子类的对象,强制向下转型;
注意在强制转型的过程中有时候需要用到instanceof 语句进行类别的判断;
还有一点就是牢记 多态自始至终都是子类对象在做着变化~
作者:
丰亚彬
时间:
2012-5-23 09:15
我用大白话给你说说,你在使用子类时,如果只是想用继承或重写自父类的方法时,你就定义一个父类引用指向子类对象,这叫向上转型,因为你这么做了以后,你的引用只能看到子类中那些和父类相同的方法,子类单独定义的那么方法它根本看不到,当然也就没法用了。
如果你想用子类特有的方法,你必须定义一个子类的引用指向子类对象,这样子类所有方法你都可以用,没有限制,这个是向下转型。当然像楼上几位朋友说的,转的时候要使用instanceOf判断一下类的所属关系,希望对你有帮助~~~~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2