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

关于JAVA多态效率的问题

楼主strangeProgramer(strangeProgramer)2004-12-04 20:21:29 在 Java / J2SE / 基础类 提问

大家说说JAVA里的多态是怎么实现的啊,是不是和C++里一样也是通过虚函数表来实现的?  
  我原来一直是做VC程序的,知道在MFC里为了避免C++多态时带来的OVERHEAD,使用了一个链表来模拟虚函数。而JAVA   的JFC也有着和MFC同样的问题。JAVA是怎样避免多态是带来的OVERHEAD   的? 问题点数:30、回复次数:13Top

1 楼javafaq2004(I will survive)回复于 2004-12-04 20:28:42 得分 10

不是虚函数实现,所以在这方面效率比不上C++  
   
  不知道新版的(5.0)java是否支持虚函数。Top

2 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2004-12-04 20:33:53 得分 0

java里面只能继承一个父类但可以实现多个接口,从而实现多态性Top

3 楼strangeProgramer(strangeProgramer)回复于 2004-12-04 22:27:11 得分 0

JAVA里有虚函数啊,只不过所有类方法都默认的是late   binding,也就是说默认的都是虚函数,只是很奇怪我看的一些JAVA语法书上都没提到LATE   BINDING   是怎么实现的。不用虚函数表还有什么更好的方法吗?Top

4 楼oiom2000(猪^_^)回复于 2004-12-04 22:36:37 得分 10

late   binding   和   C++虚函数是不一样的。那不是虚函数。Top

5 楼strangeProgramer(strangeProgramer)回复于 2004-12-05 19:19:32 得分 0

还是不明白啊,JAVA没有虚函数,动态绑定是怎么实现的?Top

6 楼batfree(没有计算机的程序员)回复于 2004-12-05 20:28:28 得分 10

通过接口来绑定的。根据接口来判断。Top

7 楼strangeProgramer(strangeProgramer)回复于 2004-12-06 19:40:38 得分 0

我是不明白怎么实现的,能不能说具体点,接口是怎么判断的?比如在C++里虚函数是通过虚函数表,使用JMP指令来跳转。既然JAVA里没有虚函数,它怎么现在跳转的?Top

8 楼mengxianwei007(一个来上海打工的民工)回复于 2004-12-06 22:47:03 得分 0

动态绑定是java的内部机制,只知道如何用就行了。Top

9 楼strangeProgramer(strangeProgramer)回复于 2004-12-07 21:50:54 得分 0

我想知道内部机制啊,难道这个问题没人知道吗?Top

10 楼javafaq2004(I will survive)回复于 2004-12-08 03:53:21 得分 0

整个Java都是虚函数表Top

11 楼yeliming(贱神)回复于 2004-12-08 08:38:09 得分 0

应该还是用虚函数表实现的吧,mark一下Top

12 楼EverythingMaster(catch(LowSalaryException e){mySalary += 10000000;})回复于 2004-12-08 08:52:43 得分 0

大家讲的很好啊!好高深!又学到不少!  
  我只知道接口决定类型,如果两个对象都实现了同一个接口,就可以认为它们具有相同的类型。一个对象可以实现多个接口,从而具有多个类型,关键是你从哪个角度去观察这个对象。而所谓的这个观察角度其实跟定义在接口中的方法有关。  
  可以想见,在运行期间,具有相同类型的(实现同一接口)两个对象是可以互换的。  
  多态<----多种状态<----多种类型<----实现多个接口Top

13 楼strangeProgramer(strangeProgramer)回复于 2004-12-08 19:36:35 得分 0

因为JAVA里所有的类都继承于OBJECT   类,所以用虚函数表的话代价太大。所以MFC里由链表来实现多态,JAVA里会不会也是这样实现的啊?Top

相关问题

  • 在读较大文件(10M-100M)时,每次多几个byte,效率最高(use java)
  • 在读较大文件( 10M-100M )时,每 次 多几个byte,效率最高(use java)
  • 关于java效率的问题.
  • 静态方法在多线程访问时,会不会有效率问题?
  • java多态性
  • 深入讨论Java效率,关心Java前途者请进
  • 大家讨论一下用java访问数据库的效率。
  • ###用JAVA做聊天室的一个效率问题,请帮忙!###
  • 多表查询执行效率问题?
  • 多线程比单线程效率高?

关键词

  • c++
  • 接口
  • 虚函数
  • 实现
  • 对象
  • 类型
  • 知道
  • late binding
  • 问题
  • 方法

得分解答快速导航

  • 帖主:strangeProgramer
  • javafaq2004
  • oiom2000
  • batfree

相关链接

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

广告也精彩

反馈

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