java对象转换问题
2013-07-26
展开全部
这个就是java的多态性了。
对象的类型只是用于指明我定义的这个变量到底能储存哪些类型,而不是说我定义成什么类型,我储存的变量就一定严格的是这个类型。
例如像你说的,当定义了一个Object的对象变量后,这个变量现在能储存任何的java类型了,但并不是说我储存了一个具体的变量以后,这个变量就变成Object类型了。只是由于这个变量是储存在Object类型中,所以它只能使用从Object继承的属性和方法,但如果你将其强制转换为它自己原本的类型,你会发现它又可以使用属于自己的属性和方法了。但假如将这个Object类型的变量换成一个真的Object对象,即使你把它强制转化为另一个类型,它还是不能使用那个类型的属性和方法。
所以,储存在Object中的对象还是保留着自己的类型信息的,只是暂时没有表现出来,必须强制转化为它自己的类型以后才可以。所以instanceof可以检测出它仍然是原来类的一个实例。
对象的类型只是用于指明我定义的这个变量到底能储存哪些类型,而不是说我定义成什么类型,我储存的变量就一定严格的是这个类型。
例如像你说的,当定义了一个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的对象
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询