JAVA中的上转型对象的几个问题

请问上转型对象究竟是子类的对象还是父类的对象呢,。然后书上有这样一句话:不要将父类创建的对象和子类对象是上转型对象混淆。那么这两者有什么区别... 请问上转型对象究竟是子类的对象还是父类的对象呢,。
然后书上有这样一句话:不要将父类创建的对象和子类对象是上转型对象混淆。那么这两者有什么区别
展开
 我来答
Big嘴
2010-11-26 · TA获得超过4097个赞
知道小有建树答主
回答量:697
采纳率:50%
帮助的人:638万
展开全部
对象的向上转型会失去对象本身的一些特有属性。
拿最经典的手机类和moto-E2类做列子:
class 手机类{
private String 外壳;
。。。。
public void 打电话(){“父类打电话!”}
pulic String 收短信(){。。。。}
}
手机类都有打电话和收发短信的功能,而且都有外壳(这是必须的)。这就是父类

派生类 也就是子类Moto-E2手机
class MOTO-E2 extends 手机类{
private XXX 扩展卡;
public void 照相;
public void 蓝牙;
public void 打电话(){“E2打电话!”}
}
这些功能都是在手机类(父类)的基础上扩展的,也是子类E2类的特色。
当你创建一个E2类时,如下:

手机类 手机 = new MOTO-E2();
这个就是向上转型,这时编译器只知道你创建了一个手机类,而不知道你创建了一个MOTO-E2类,因为他是编译器嘛,只知道编译时的事,这时你调用
手机.照相,编译不通过,编译器太傻了,因为他不知道你创建的是E2类啊。
当你调用
手机.打电话时,你猜怎么样,他会调用E2的打电话方法,打印:“E2打电话”。因为运行起来,jre发现了,原来这个对象是E2类啊,所以你调用对象的方法,他就真的会去调用该方法,这个也是重写的意义!

所以创建一个父类对象和转型一个子类对象其实操作的不是一个对象,当然不能混为一谈了!
偶丨尔
2010-11-24 · TA获得超过224个赞
知道答主
回答量:110
采纳率:0%
帮助的人:96.6万
展开全部
向上转型是用父类的引用指向子类的对象。
即方法区中存放的是父类的说明,但堆中实际存储的是子类的对象。
而父类创建的对象方法区中是父类的说明,堆中存储的是父类的对象。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式