CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

向上转型

楼主fweione(Panther)2005-03-12 11:24:54 在 Java / J2SE / 基础类 提问

在Java   编程思想中第六章讲到了"向上转型",我认为向上转型就是基类的引用指向派生类的对象,不知是否是这样?另一个问题是这样做有什么好处? 问题点数:10、回复次数:6Top

1 楼kblmkblm(haha)回复于 2005-03-12 12:11:31 得分 0

sorry,基类引用指向派生类对象是什么意思?我的理解:一个类继承另一个类,子类生成一个对象,继承了父类的数据成员和方法,然后强制类型转换成父类。但在内存中子类对象的this指针仍指向本对象,如果子类override从父类继承的方法,该对象调用的方法仍是子类对象的方法,即覆写后的方法,这样可以在运行时刻才绑定方法,使程序员不用担心调用错误的方法,这应该就是著名的多态性。不知道这样理解对不对。Top

2 楼quiton(蛛蛛)回复于 2005-03-12 13:50:47 得分 0

假设A类是B的父类,当我们用子类创建一个对象,并把这个对象的引用放到父类的对象中,称父类对象是子类对象的上转型对象。  
   
  多态性就是父类的某个方法被子类重写时,可是产生各自的行为功能。  
   
  采用多态,让程序具备了动态的扩充性。Top

3 楼kblmkblm(haha)回复于 2005-03-12 17:19:57 得分 0

请高手指点:  
  “当我们用子类创建一个对象,并把这个对象的引用放到父类的对象中”  
  子类创建一个对象时难道会产生一个父类对象吗?例如:  
  Collection   a   =   (Collection)new   ArrayList();  
  a.***();  
  我的理解a仍然是ArrayList对象,只是在内存中a的前若干数据项和方法符合Collection类的标准。所以可以向上转型。  
  不知对不对,请指教。Top

4 楼tantj(Focus on....)回复于 2005-03-12 17:37:30 得分 0

我也对这个不是很清楚,关注中Top

5 楼neujyj(一路走来)回复于 2005-03-12 18:48:05 得分 0

很简单,向上转型会缩小子类对外方法,  
  这样可以接收更多的继承基类的子类,所以不同的子类可以接收同样的引用  
  就象这样  
      方法     打(XX){     },基中XX代表一基类  
      子类   人和水都继承XX  
          调用打(new   人()),打(new   水()),很显然行为是不一样的,但它可以正常的执行  
    其本质是通过基类的方法接口来调用子类在内存中产生的代码段Top

6 楼neujyj(一路走来)回复于 2005-03-12 18:55:55 得分 10

“当我们用子类创建一个对象,并把这个对象的引用放到父类的对象中”  
  子类创建一个对象时难道会产生一个父类对象吗?例如:  
  Collection   a   =   (Collection)new   ArrayList();  
  a.***();  
   
  答:  
  在这里a只是内存中一个受到限制的引用(它只能调用Collection及Collection继承类的方法),  
  a实际调用的是在内存中产生的ArrayList对象的代码,  
  所以ArrayList继承Connection中一定要包含Connection中的方法,  
  否则a会去调用Connection中方法Top

相关问题

  • 向上转型的小问题
  • 两种“向上强制转型”的结果会不一样,为什么?
  • 大哥大姐们帮帮我解决Java关于向上转型
  • 关于转型
  • 转型的问题
  • 继承和转型问题
  • ~~~~~转型问题!求助~~~!!!
  • 数据转型问题
  • 程序员如何转型?
  • 转型失败,郁闷中...

关键词

  • 转型
  • 内存
  • 子类
  • 对象
  • 类
  • 调用
  • 引用
  • 方法
  • 向上转型
  • 继承

得分解答快速导航

  • 帖主:fweione
  • neujyj

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo