黑马程序员技术交流社区
标题:
(Demo)obj是什么意思?
[打印本页]
作者:
郭孟涛
时间:
2013-2-14 00:53
标题:
(Demo)obj是什么意思?
QQ拼音截图未命名.jpg
(16.18 KB, 下载次数: 316)
下载附件
2013-2-14 00:50 上传
如图,Demo d = (Demo)obj;
这一句是个什么写法? 假如在实例化对象的时候一般不是这么写吗? Demo d = new Demo();
这个(Demo)obj是什么意思?
作者:
罗海云
时间:
2013-2-14 09:09
这是向下转型, 毕老师视频里讲过, 意思就是把Object类型向下转型成Demo型, Demo d = new Demo();这句又是创建一个Demo型的变量了.意思是不一样的
作者:
逍林游
时间:
2013-2-14 09:58
强制转换····
作者:
袭喜悦
时间:
2013-2-14 10:44
这是向下转型, 意思就是把Object类型向下转型成Demo型, 向下转型之后只可以调用object类的属性
作者:
陈科宇
时间:
2013-2-14 11:57
朋友,你首先要搞清楚instanceof的含义。它判断运算符前面的对象是否是运算后面的类的对象。这里有一个原则。instanceof判定的范围必须保证前面的对象与后面的类有直接或间接父子关系,否则会报错,所以这里采用Object来容纳各种可能放进去的对象类型。之所以需要强制转换。是因为在使用instanceof判定时,是使用对象运行时的类型来判定。举个例子:
DemoFather df=new Demo(5);//假定5为num的值
Demo d=new Demo(5).
执行d.equals(df)时,由于会执行Object obj=df;
现在堆内存中的对象的声明类型为Object类型,所以必须进行强制转换成Demo类型,才能调用num属性。
作者:
walkonby
时间:
2013-2-15 10:10
前面instanceof 判断就是判断传进来的对象是不是Dome类或者他的子类或者是Demo类这个体系的对象 如果不是就直接return了
如果是Demo类这个体系的对象我把他从Object类型转换为Demo类型 这个是可以的 因为上面已经判断了 能走到这一步的必然是Demo这个体系的对象
作者:
Rancho_Gump
时间:
2013-2-15 11:22
“已经有了判断,在转为Demo类型。貌似就多此一举了”这个不多此一举。
如果不向下转型,那么此对象是Object类类型,只能调用Object类里可访问的方法或变量。
4楼讲到了这点 “现在堆内存中的对象的声明类型为Object类型,所以必须进行强制转换成Demo类型,才能调用num属性。”
作者:
张晋瑜
时间:
2013-2-15 15:06
(Demo)就是数据类型强制转换
作者:
马铿
时间:
2013-2-18 17:13
向下转型,Demo d = (Demo)obj;只有Demo是obj这个类型的子类才可以这样做,如果Demo跟obj类型没有任何关系,则不能转
此时d的方法都是子类的具体方法,以及覆盖父类的方法
作者:
寇弘禄
时间:
2013-2-18 22:26
这个属于多态吧,不可以将一个Object类型的数据赋给一个Demo类型的数据,前面用instenceof判断了一下这个obj,如果是Demo类的,则需将其转为Demo后才可赋给Demo,如果不是Demo类的则不能转换。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2