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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹昌豪 中级黑马   /  2012-5-22 18:58  /  2035 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

学多态时有转型的情况,也知道怎么转型,但是今天看到一个问题,问什么时候用向上转型,什么时候用向下转型呢,这个就不知道了,概念太差,请童鞋们给个答案!!!!感激

8 个回复

倒序浏览
向上转型:提高扩展性,同时影藏了子类的类型和特有方法。是一种限定和影藏。
向下转型:需要使用到子类的特有成员,向下转型的前提是进行类型判断,用到instanceof
回复 使用道具 举报
把对某个对象的引用视为对其基类引用的做法被称为“向上转型”。
这主要是由于子类的对象可以看成是基类的对象的原因而得来的,也就是具有is-a关系。
基类可以接收发给导出类的任何消息,因为二者有完全相同的接口,我们只需要
从导出类向上转型,永远不需要知道正在处理的对象的确切类型,这也就是多态性决
定的。利用多态性,具有同样方法名和方法特征的方法根据调用方法的对象的类型,
可以产生不同的动作,这极大地增加了程序员的表达能力。

将基类的引用强制转换为子类类型就叫做向下转型;
继承可以确保所有的子类类具有基类的接口,且绝对不会少。那么子类除了有父类的
方法,也可以有自己的额外的新方法(这些方法是基类所没有的),那么一旦向上转
型,就不能调用子类中的新方法,那么要调用子类独有的方法时当然就需要向下转型了。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
我算是知道了  你就是来刷分的  亏我还在那尽心尽力的给你回答。。。。。。
回复 使用道具 举报
父类引用指向子类对象。属于向上转型,作用它可以调用父类跟子类共有的方法。换句话说,它可以指挥同一类型的所有对象工作。

向下转型就是当你想使用子类自己特有方法的时候时才用到!
回复 使用道具 举报
为什么我回答了那么一大块,提交了却说要审核,而且不见了!!!我回答了有1000多字了,请管理员给个答复呗!!!

评分

参与人数 1技术分 +1 收起 理由
admin + 1 好的,没问题

查看全部评分

回复 使用道具 举报
刘聪 中级黑马 2012-5-23 08:48:58
7#
谢谢,本来想重写的,但是又怕写的没有开始那么完善了(边想边写很费时的),就没有重写了。谢谢管理员,也希望楼主明白了问题!
回复 使用道具 举报
李斌 中级黑马 2012-5-23 09:05:29
8#
简单一句话,当需要调用同父类的共有方法或者子类覆盖掉的方法时,让父类的引用指向子类对象 向上转型;
当需要子类的特有内容时 让子类的引用重新指向子类的对象,强制向下转型;
注意在强制转型的过程中有时候需要用到instanceof 语句进行类别的判断;
还有一点就是牢记 多态自始至终都是子类对象在做着变化~
回复 使用道具 举报
我用大白话给你说说,你在使用子类时,如果只是想用继承或重写自父类的方法时,你就定义一个父类引用指向子类对象,这叫向上转型,因为你这么做了以后,你的引用只能看到子类中那些和父类相同的方法,子类单独定义的那么方法它根本看不到,当然也就没法用了。
如果你想用子类特有的方法,你必须定义一个子类的引用指向子类对象,这样子类所有方法你都可以用,没有限制,这个是向下转型。当然像楼上几位朋友说的,转的时候要使用instanceOf判断一下类的所属关系,希望对你有帮助~~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马