黑马程序员技术交流社区

标题: 什么是向上转型和向下转型? [打印本页]

作者: cyc523633157    时间: 2014-8-3 18:52
标题: 什么是向上转型和向下转型?
本帖最后由 cyc523633157 于 2014-8-4 22:11 编辑

请问什么是向上转型和向下转型?有点难以理解。

作者: 晓_猪    时间: 2014-8-3 18:56
在java中所有类的父类都是object。若有类A。A转为object,则为向上转型!反之,向下转型!
作者: kakasa    时间: 2014-8-3 19:16
多态么,被父类引用指向子类对象不能调用子类方法,
作者: cyc523633157    时间: 2014-8-3 19:43
kakasa 发表于 2014-8-3 19:16
多态么,被父类引用指向子类对象不能调用子类方法,

恩,,为什么不能调用子类方法,
作者: 怀念黑海岸    时间: 2014-8-3 19:51
        int a =3;
        long b =a;
        short c=(short)a;
就拿基本数据给你说吧,你有一个int类型的数据a,你吧他赋值给范围更大的long数据类型,这是没问题的,小范围的数据赋值给大范围的变量,自动向上转型。
但是你如果要吧a赋值给比变量a范围还小的变量那么他会提示你,这样子做会导致损失精度,编译就过不了,这是需要吧a进行强制转型。所以强制向下转型。
作者: cyc523633157    时间: 2014-8-3 19:55
怀念黑海岸 发表于 2014-8-3 19:51
int a =3;
        long b =a;
        short c=(short)a;

恩,你回答的太棒了。
作者: kakasa    时间: 2014-8-3 19:58
cyc523633157 发表于 2014-8-3 19:43
恩,,为什么不能调用子类方法,

因为父类里没有这个方法

毕老师有个功能是看电影,他父亲却没有这功能,现在毕老师假扮成他父亲,这时候毕老师的朋友找他去看电影,但是这位朋友开门见到的是“毕老师的父亲”,他要和毕老师看电影,而不是“毕老师的父亲”。

视频里的例子差不多就这样吧。
作者: 微小宝    时间: 2014-8-3 20:19
哈哈,经典!!!毕老师太棒了!!!!
作者: 小乖乖灬浩歌    时间: 2014-8-3 20:27
子类对象指向父类引用  就是向上转型  父类引用无法使用子类对象特有得方法  就需要转化成子类类型  这就是向下转型
作者: zhouqun    时间: 2014-8-3 20:57
子类转父类的类型是向上转型  父类型的转子类的是向下转型
作者: dingpanbo    时间: 2014-8-3 21:20
来学习的
作者: 南柯一梦    时间: 2014-8-3 21:34
向上转型就是转为其父类,向下转型就是转为其父类的子类
作者: chulangren2    时间: 2014-8-3 23:48
A是B的父类,如果定义了A  a = new B();则是向上转型,父类引用指向子类对象。如果把B  b = (B)c
作者: —Jimmy—    时间: 2014-8-4 10:11
向上转型就是将子类对象赋给父类引用,向下转型就是将父类对象强制转换成子类引用.这是多态性的体现!
作者: 晓风    时间: 2014-8-4 10:24
向上转型就是子类转成父类,这是自动转型的;向下转型就是父类转为子类,这就要强制转换。
作者: LFW    时间: 2014-8-4 12:38
Animal a = new Cat();Cat c = (Cat)a;这就是向下转型。猫对象都是动物,自动向上转型了。因为父类对象指向子类对象,这个动物a指向的其实是猫的实例,所以它能够强制向下转型,(这时Dog d = Dog(a)会出错,因为a是动物同时是猫,而不能是狗)。多态的好处是,猫狗猪都会吃东西,那么Animal c/d/p都可以作为Animal类型的变量接收,代码复用性大大提高(这就用到了向上转型)。但是猫会抓老鼠猪不会抓老鼠,所以具体的动物又有具体的功能,这就需要向下转型,如果是猫类,那么动物a instanceof 猫就判断成功,就能向下转型Cat c = (Cat)a,这个动物就确定是猫,它就可以抓老鼠了。((((((((((((((((((讲的有点乱,结合着毕老师的例子来看(我是靠回忆给你说的,不当之处望谅解)。
作者: 闪电博尔特    时间: 2014-8-4 22:08
向上就是向父类转,向下就是向子类转
作者: xiaoxiaofeng    时间: 2014-8-4 22:16
本帖最后由 xiaoxiaofeng 于 2014-8-4 22:18 编辑

上转型:子类向父类转型即多态的实现。下转型:父类向子类强制转换。





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