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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王海中 初级黑马   /  2015-10-15 22:24  /  1887 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

向上转型与向下转型用法,有时必须要向下转型才能不报错,什么时候转呢?谢谢赐教

8 个回复

倒序浏览
求指导!真心不熟悉
回复 使用道具 举报
请问你问的是基本数据的转换还是多态的转换
回复 使用道具 举报
奋斗的丫丫 发表于 2015-10-18 10:31
请问你问的是基本数据的转换还是多态的转换

基本的会,多态的不怎么会,求指导
回复 使用道具 举报
1、        向上转型(类型提升): 父类  父引用  = new 子类()
2、        向下转型(强制转换): 子类  子引用 = (子类)父引用;

当想提高程序的扩展性,并且不需要访问子类对象的特有成员时,向上转型
当想要访问子类对象中的特有成员时,需要向下转型,在向下转型时,需要使用instanceof关键字,避免发生ClassCastException异常

回复 使用道具 举报
obj  instanceof  class ,,,,是判断obj的所属类型否是class,只是为了程序严谨加一步判断,不一定是必须加
回复 使用道具 举报
正在看这部分。
回复 使用道具 举报
一、先说说数据类型之间的转换
1、自动类型提升(也叫隐式类型转换,向上转型):只有类型一致的才可做运算,类型不同,内存就不同,那么Java中有自动类型提升来处理类型不同的运算,但是前提都是数值。
2、强制类型转换(也叫显示类型转换,向下转型):在不同类型数值做运算的时候,运算结果由于自动类型提升的原因,用内存小的变量接收结果,但由于结果内存大于用于接收的变量内存时,可以使用强制类型转换,但是要慎用,因为用得不准确,会损失精度。
System.out.print('a'+1);这个语句输出的结果是:98,因为char和int运算结果提升为int型的。
byte b = 3; b = b + 4;这样是会报错的,损失精度,因为b+4的结果是int类型,int类型赋给byte是装不下的。
应该改成b = (byte)(b+4);//强制类型转换
二、多态里边的转型
多态:一个对象,多种形态  
向上转型:比如多个类,分析之后发现具有共性,那么将共性封装成一个类被那多个类所继承,如果想访问共性数据,可以向上转型,作用就是限制对特有功能的访问。
向下转型:加入上面是需要访问共性内容,之后还要访问特有数据,那么可以向下转型。向下转型的目的就是为了使用子类中的特有数据。  
个人理解,不知道对否!希望可以帮到你!
回复 使用道具 举报
#在这里快速回复#http://bbs.csdn.net/topics/360106633参见这个博客
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马