java 某个类的几个对象,这些对象调用类中一个函数,是各自拥有自己的函数代码还是使用同一段代码?

1.java 某个类的几个对象,这些对象调用类中一个函数(普通的函数),是各自拥有自己的函数代码还是使用同一段代码?
2.java 继承中,子类从父类得到一些普通函数,这些函数的代码,是子类自己独自拥有一份还是和父类使用同一段函数代码。
3.第一次发帖,积分什么的不会搞,貌似自己也没有积分,呵呵,大家包涵!

19个回答

[quote]1.java 某个类的几个对象,这些对象调用类中一个函数(普通的函数),是各自拥有自己的函数代码还是使用同一段代码?[/quote]
这几个对象调用的当然是同一段代码了。jvm中有一个java 栈的概念,每个线程有且仅有一个java栈,每次方法调用jvm都会向当前的java栈中压入一个栈帧,使用这个帧来存数参数、局部变量、中间运算结果等等数据。方法退出的时候就出栈,弹出了。
[quote]2.java 继承中,子类从父类得到一些普通函数,这些函数的代码,是子类自己独自拥有一份还是和父类使用同一段函数代码。[/quote]
子类编译后生成的字节码本身并不会包含父类特有的方法字节码,jvm会在运行时,当子类要调用到父类的方法是,会将父类的方法调用以栈帧(上面提到的)的方式压入并调用方法的指令集执行。

从楼主的提问中可以看得出来,楼主本身对于JVM本身可能并不太了解,建议楼主可以看看《Inside JVM》、jvm规范等,亦可参考我的一个基础的JVM入门系列[url=http://boy00fly.iteye.com/blog/1095263]自己动手写写:关于jvm的理解(1)[/url]
[url=http://boy00fly.iteye.com/blog/1095744]自己动手写写:关于jvm的理解(2)[/url]
[url=http://boy00fly.iteye.com/blog/1096637]自己动手写写:关于jvm的理解(3)[/url]

1.同一段吧。几个对象的变量是保存在堆栈里的各自的具体的实例中,代码的话只有一段吧

2.继承后应该是同一段的,除非用@override把函数重写了,继承的话本质上应该是之类的对象中包含了一个父类的对象

我感觉JAVA实现的内部结构和C C++应该差别不大,

刚搜索了一下,是这么说的:

继承是一种静态共享代码的手段,通过子类对象的创建,可以接受某一消息,启动其父类所定义的代码段,从而使父类和子类共享这一段代码。

个人见解都是各自独立的。

[quote]
个人见解都是各自独立的。
[/quote]
代码段必然不是独立的 不然内存都不够。。。。

那要看你实现什么功能了?一般用继承是为了让代码的重用性强

[quote]http://hllvm.group.iteye.com/group/wiki/3053-JVM[/quote]

看看这篇文章和这个群组中的文章吧,相信对你的疑问有所帮助。

我想楼主知道了答案也可能忘。。建议下本《深入JAVA虚拟机》的PDF看看。就是豁然开朗,哈哈。 :D

函数代码肯定是能够复用尽量复用的啦,设计者也肯定考虑到这个,所以是同一段代码.

src是一个,代码段自然也是一个,否则内存怎么够。当然,这个不考虑多个classloader的情况

共19条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!