0 0

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

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

19个答案 按时间排序 按投票排序

0 0

采纳的答案

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

这几个对象调用的当然是同一段代码了。jvm中有一个java 栈的概念,每个线程有且仅有一个java栈,每次方法调用jvm都会向当前的java栈中压入一个栈帧,使用这个帧来存数参数、局部变量、中间运算结果等等数据。方法退出的时候就出栈,弹出了。
引用
2.java 继承中,子类从父类得到一些普通函数,这些函数的代码,是子类自己独自拥有一份还是和父类使用同一段函数代码。

子类编译后生成的字节码本身并不会包含父类特有的方法字节码,jvm会在运行时,当子类要调用到父类的方法是,会将父类的方法调用以栈帧(上面提到的)的方式压入并调用方法的指令集执行。

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

2011年10月26日 16:24
0 0

2011年10月30日 17:43
0 0

代码是同一段代码,但是调用都是独立的。

2011年10月28日 22:04
0 0

继承要看你怎么用了,如果不重写父类的方法,那就是执行同一段代码。如果重写的话,就执行子类的代码。。

2011年10月28日 15:12
0 0

1 类的多个对象,方法共用,属性各自有。
2 子类继承父类,方法也是共用。
3 你悬赏的积分很高啊。

2011年10月28日 10:28
0 0

楼主,当你遇见这种问题的时候你要自己问问自己,如果让我设计这个问题我会怎么设计呢?!
你想,如果两个对象要调用同一个方法,如果我是为他们分别分配储存这个方法的内存,那么如果我用一个循环来创建对象,那么就会分配出很多内存,但是内存的内容都是一样的,你觉得这样设计合理吗!?
每个面向对象的都会回答,明显不合理啊!

所以结论很简单他们是同一段代码。(另外为什么String这个类不是基本类型也是这个原因)

2011年10月27日 16:53
0 0

代码段是共享的,数据段和堆栈段是独立的。但真正将代码段的函数调入栈里面准备执行的时候是独立的,这时候他是作为指令等待着被执行的。

2011年10月27日 16:09
0 0

我的理解是  代码只有一段
但是不同的调用放调用同一段代码所分配的内存空间是不同的

2011年10月27日 14:27
0 0

楼主是学习java的吗?

2011年10月27日 13:54
0 0

堆内存有段PermGen区专门储存字节码信息。
每个类只在首次调用时加载一次,另外如果长时间不用的类会被从内存移除。以后再次调用 时会被加载。

类的加载顺序是:首先加载Object类,如果Object类已成功加载,会再加载类的父类,最后再加载要调用的类;也就是说,类按照继承顺序加载。

2011年10月27日 11:34
0 0

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

2011年10月27日 00:39
0 0

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

2011年10月26日 15:42
0 0

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

2011年10月26日 12:45
0 0

引用
http://hllvm.group.iteye.com/group/wiki/3053-JVM


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

2011年10月26日 10:21
0 0

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

2011年10月26日 09:56
0 0

引用

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

代码段必然不是独立的 不然内存都不够。。。。

2011年10月26日 09:56
0 0

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

2011年10月26日 09:47
0 0

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

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

2011年10月26日 09:44
0 0

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

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

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

2011年10月26日 09:36

相关推荐

    函数之间调用同一个对象方法

    在探讨“函数之间调用同一个对象方法”的主题时,我们首先需要理解几个核心概念:函数、对象、方法以及事件监听器。这些概念是现代编程语言,尤其是面向对象编程语言中的基石,它们共同构建了复杂软件系统的逻辑框架...

    java调用python中的自定义函数函数

    这段Java代码首先创建了一个`PythonInterpreter`实例,然后使用`execfile`方法加载了`addition.py`文件。接着,通过`get`方法获取了Python的`add`函数,并使用`__call__`方法调用该函数,传入两个`PyInteger`对象...

    Smo算法完整版java代码—加了几个核函数

    文件名中提到的"加了几个核函数",意味着该实现可能包含了多种常用的核函数,如线性核、多项式核、高斯核(RBF,Radial Basis Function)等。线性核适用于线性可分问题,多项式核可以处理某些非线性问题,而高斯核...

    Java中对象与引用

    **对象**: 在Java中,对象是类的一个实例,即根据类的模板创建出来的具体实体。每个对象都有自己的属性(如字段)和方法。例如,`Student` 类可以用于创建具体的 `Student` 对象。 **引用**: 引用则是指向对象的...

    伽玛函数数值解法Java代码

    通过这样的Java代码,开发者可以方便地在自己的程序中调用伽玛函数或不完全伽玛函数,而无需依赖外部库。这种自定义实现不仅可以加深对伽玛函数理解,还可以在某些特定场景下提供更高的性能和灵活性。

    java试验,random函数调用等

    在"java试验,random函数调用等问题"中,我们可能涉及以下几个关键知识点: 1. **Random类的创建**: 在Java中,我们首先需要通过`new Random()`来实例化一个`Random`对象,然后才能调用它的方法来生成随机数。...

    java私有构造函数

    在这段代码中,`Handler`类的构造函数被声明为私有,以确保外部无法直接创建新的`Handler`对象。`getHandler()`方法则负责管理单例实例的创建和分发。 #### 四、总结 私有构造函数在Java中是一种非常有用的设计...

    JAVA上百实例源码以及开源项目源代码

    用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天通信演示代码 2个目标文件...

    Java 8函数式编程.rar

    ` 这段代码使用lambda表达式过滤了一个整数列表,并打印出所有大于10的元素。 2. **函数接口**:为支持lambda表达式,Java 8引入了函数接口,如`java.util.function.Function`, `Predicate`, `Consumer`等。这些...

    MFC调用Java的Action

    描述中的链接指向了一个CSDN博客文章,虽然具体内容无法在此直接引用,但通常这种调用是通过JNI(Java Native Interface)实现的。JNI允许Java代码调用本地(如C++)代码,并反之亦然。首先,你需要在Java端创建一个...

    db2调自定义函数(小例)

    这段代码通常被包含在一个或多个源文件中。例如,在C语言中,你可以创建一个名为`os_calls.c`的源文件,其中包含了多个函数的定义,如`readFileToClob`、`readFileToTable`、`writeFileFromParams`和`systemCall`等...

    jave对象和类习题及答案

    提到“三个整数的最大值”,在Java中,可以使用Math.max()函数求两个数的最大值,但对于三个数,需要编写一段逻辑,比较三个数并返回最大值。这可以锻炼学习者的逻辑思维能力和基本函数的运用。 至于“星期几的英文...

    Kettle API - Java调用示例

    为了使示例可重复运行,示例中还包含了一段代码用于在每次运行后删除目标表,即调用`execStatement()`执行`DROP TABLE`命令。 6. **注意点**: - 在使用Kettle API时,通常需要初始化环境,如示例中的`EnvUtil....

    构造一个圆类和圆柱类 java语言实现

    根据给定的信息,本文将详细解释如何在Java中构建一个圆形类(Circle)以及一个圆柱形类(Column),并且这两个类之间的继承关系。我们还会分析提供的代码,并深入探讨其中涉及的重要概念,如面向对象编程的基本特性...

    【Matlab】Java 中使用 MATLAB 作图

    示例代码段展示了如何在Java中初始化数据、创建实例并调用MATLAB生成的plotter类的drawplot()函数来绘制y=x^2的图像。代码中使用了try块以处理可能的异常,同时通过for循环设置x值,并调用set()方法在MWNumericArray...

    kettle中使用js调用java类的方法

    在Pentaho kettle中使用JavaScript调用Java类的方法是一种扩展kettle处理能力的方式。这个过程涉及几个关键的步骤,包括准备环境、编写正确的调用代码以及设置好相关的执行环境。本文将围绕这些方面展开,详细讲解在...

    通过实例学习Java对象的构造过程

    本文将通过一个实际项目的案例,探讨Java对象的构建与初始化过程,并从中总结出设计Java类时需遵循的重要原则。 #### 案例描述 案例源自一个项目中的抽象对话框基类——`BaseDlg`的设计与实现。该基类旨在简化...

    超级有影响力霸气的Java面试题大全文档

    当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。 20、abstract class和interface有什么区别? ...

    java代码运行效率

    - 使用final修饰符可以明确表明一个类或方法的最终状态,有助于其他开发者理解代码意图。 - 编译器的内联优化可以减少方法调用的开销,提高代码的执行速度。 #### 五、优先使用局部变量 局部变量存储在栈中,访问...

Global site tag (gtag.js) - Google Analytics