黑马程序员技术交流社区
标题:
什么是向上转型,什么是向下转型?
[打印本页]
作者:
想太多
时间:
2016-7-8 22:55
标题:
什么是向上转型,什么是向下转型?
谁能帮我仔细解释一下什么是向上转型,什么是向下转型,我不是很懂。
作者:
梦想天空分外蓝
时间:
2016-7-8 22:57
.......................
作者:
看需求
时间:
2016-7-8 22:58
父类引用指向子类对象就是向上转型
作者:
看需求
时间:
2016-7-8 22:59
向下转型就是将上级对象强制转成子类的
作者:
Ly丶Roman
时间:
2016-7-8 23:02
同上~ 向下转型要在向上转型的前提下哦
作者:
zzc359899221
时间:
2016-7-8 23:10
父类引用指向子类对象就是向上转型;将向上转型后的对象有强制装换为其子类的类型!
作者:
warku
时间:
2016-7-8 23:48
借楼问个问题,转型作用是什么? 做的练习好像没有这方面的~~
作者:
Insomnia!
时间:
2016-7-9 06:28
前者是多态,后者是解决多态弊端的
作者:
新人—小明同学
时间:
2016-7-9 16:29
先有向上才有向下..
作者:
zhangwenjin
时间:
2016-7-9 22:14
Person p = new Student(); 这就是向上转型
Student s = (Student)p; 这就是向上转型
作者:
aslwq2012
时间:
2016-7-10 18:43
向上转型就是类型的提升,即父类引用指向子类的对象;
向下转型就是类型强制转换
作者:
rogerpbj
时间:
2016-7-10 19:44
一般用的比较多的,是对象之间,主要父子类之间的类型互相转换~~多看下视频,很好理解的
作者:
迅雷
时间:
2016-7-10 21:40
多态,要理解的话最好画个内存图
作者:
yabiaodou
时间:
2016-7-10 22:26
Person p = new Student(); 这就是向上转型
Student s = (Student)p; 这就是向上转型
笔记上这么说!!!
作者:
糊图
时间:
2016-7-10 22:45
多理解一下多态,就可以理解清楚了,别人给你说也起不了太大的作用
作者:
DDV
时间:
2016-7-10 22:55
Person p = new Student(); 这就是向上转型
Student s = (Student)p; 这就是向上转型
笔记上这么说!!!
作者:
额滴神啊
时间:
2016-7-10 23:02
同求 虽然我知道你是什么目的
作者:
愿望变美
时间:
2016-7-11 23:28
Person p = new Student(); 这就是向上转型, 父类在上面, 将Student类转为Person类, 即子类转为父类
Student s = (Student)p; 这就是向下转型, 子类在下面, 将父类p强制转化为子类s, 就是向下转型了, p是已有的父类, 才能转,,,
作者:
zhangjiesss
时间:
2016-7-22 17:55
好好看一下多态这部分,楼上说的理解理解
作者:
coco2016
时间:
2016-7-22 18:27
面向对象中,向上转型就是父类对象指向子类引用,向下转型就是将父类对象转换成子类对象,必须先有向上转型才有向下转型。。
作者:
cat73
时间:
2016-7-22 18:43
男人 属于 人
人 属于 动物
那么:
我说一个人是动物,这就是人到动物的向上转型。
我说一个人是男人,这就是人到男人的向下转型。
作者:
小福点儿
时间:
2016-7-22 22:55
了解了.有压力啊
作者:
qetu001212
时间:
2016-7-22 23:05
这个是多态中的,向上转型就是父类引用指向子类对象,向下转型就是将父类引用转换为子类引用
作者:
李铮
时间:
2016-7-22 23:51
感觉这个没有什么实际的意义呢
作者:
javaee王虎
时间:
2016-7-23 08:31
向上就是子类转父类
向下就是父类转子类
作者:
wei451341693
时间:
2016-7-23 08:49
向下转型的前提一定是存在多态,当父类中有共享的方法,为了方便调用简化操作,一般都会向上转型,如果一个方法父类没有,子类有,那么在多态的前提下要向下转型才可以用到子类的方法
作者:
wyq0627java11
时间:
2016-7-23 10:30
向上转型
* 多态本身的父类引用指向子类对象就是 将子类对象向上转型
* 向下转型
* 如果之前已经是一个子类对象,提升成了父类引用,就可以强制向下转为子类引用
Zi zi = new Zi();
Fu fu = new Fu();
//多态
Fu fz = new Zi(); //父类引用指向子类对象
//这时候可以调用父类方法,但按子类的方法执行(即如有方法重写,按重写方法执行,多态),不能调用父类没有的方法。
fz.method2(); //method2() 是子类继承父类并重写的方法
//fz.method(); //method() 是子类中特有的方法,这时不能被fz调用
//向下转型(强制类型转换)
//如果之前已经是一个子类对象,提升成了父类引用,就可以强制向下转为子类引用
Zi zi2 = (Zi)fz; //fz之前是通过向上转型得到的
//这时候zi2可以调用子类所有的方法(包括从父类继承的),并按子类方法执行
zi2.method();
zi.method2();
//fu引用指向的对象,创建对象是就是父类对象,无法转为子类对象
//类型转换异常是一个运行时异常。即编译时不报错,运行时报错的异常
Zi zi3 = (Zi)fu; //这个就不对了
* 父类引用指向子类对象时,向上转型相当于给儿子带了一个父亲的面具!
* 向下转型时,相当于又把面具给摘下来了。
* 而真实的父亲,并不能向下转型,因为父亲根本不带面具,所以也没办法摘下来!
作者:
Michalel_yan
时间:
2016-7-24 00:21
不懂的地方,多看看视频,然后多敲敲代码就好了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2