java对象转换问题

为什么返回类型为Obejct的对象却能用instanceof判断原来的类?请说说内部机制... 为什么返回类型为Obejct的对象却能用instanceof判断原来的类?请说说内部机制 展开
 我来答
匿名用户
2013-07-26
展开全部
这个就是java的多态性了。

对象的类型只是用于指明我定义的这个变量到底能储存哪些类型,而不是说我定义成什么类型,我储存的变量就一定严格的是这个类型。

例如像你说的,当定义了一个Object的对象变量后,这个变量现在能储存任何的java类型了,但并不是说我储存了一个具体的变量以后,这个变量就变成Object类型了。只是由于这个变量是储存在Object类型中,所以它只能使用从Object继承的属性和方法,但如果你将其强制转换为它自己原本的类型,你会发现它又可以使用属于自己的属性和方法了。但假如将这个Object类型的变量换成一个真的Object对象,即使你把它强制转化为另一个类型,它还是不能使用那个类型的属性和方法。

所以,储存在Object中的对象还是保留着自己的类型信息的,只是暂时没有表现出来,必须强制转化为它自己的类型以后才可以。所以instanceof可以检测出它仍然是原来类的一个实例。
匿名用户
2013-07-26
展开全部
返回类型为object,是用了对象的向上造型,因为object类是所有类的基类。instanceof 的用法是判断左边的对象是不是右边类(或者接口)的实例或者其子类的实例。你的意思说instanceof却能判断原来的类,因为是向上造型技术不改变对象的类型,而是让父类对象的句柄持有子类对象的引用;就是说子类对象的类型没有改变。记住一点,就是new 哪个类的构成方法,这个对象就是这个类的实例,不管经过多少次向上造型,都不会改变类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-26
展开全部
因为Object对象是所有类的父类。instanceOf是Java的一个二元操作符,它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。因为object是都有类的父类,显然是正确的、。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-26
展开全部
所有类都是继承自Object类,所以都是Object的对象
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式