-
java 某个类的几个对象,这些对象调用类中一个函数,是各自拥有自己的函数代码还是使用同一段代码?30
1.java 某个类的几个对象,这些对象调用类中一个函数(普通的函数),是各自拥有自己的函数代码还是使用同一段代码?
2.java 继承中,子类从父类得到一些普通函数,这些函数的代码,是子类自己独自拥有一份还是和父类使用同一段函数代码。
3.第一次发帖,积分什么的不会搞,貌似自己也没有积分,呵呵,大家包涵!2011年10月26日 08:39
19个答案 按时间排序 按投票排序
-
采纳的答案
引用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
-
楼主,当你遇见这种问题的时候你要自己问问自己,如果让我设计这个问题我会怎么设计呢?!
你想,如果两个对象要调用同一个方法,如果我是为他们分别分配储存这个方法的内存,那么如果我用一个循环来创建对象,那么就会分配出很多内存,但是内存的内容都是一样的,你觉得这样设计合理吗!?
每个面向对象的都会回答,明显不合理啊!
所以结论很简单他们是同一段代码。(另外为什么String这个类不是基本类型也是这个原因)2011年10月27日 16:53
-
堆内存有段PermGen区专门储存字节码信息。
每个类只在首次调用时加载一次,另外如果长时间不用的类会被从内存移除。以后再次调用 时会被加载。
类的加载顺序是:首先加载Object类,如果Object类已成功加载,会再加载类的父类,最后再加载要调用的类;也就是说,类按照继承顺序加载。2011年10月27日 11:34
-
引用http://hllvm.group.iteye.com/group/wiki/3053-JVM
看看这篇文章和这个群组中的文章吧,相信对你的疑问有所帮助。2011年10月26日 10:21
-
刚搜索了一下,是这么说的:
继承是一种静态共享代码的手段,通过子类对象的创建,可以接受某一消息,启动其父类所定义的代码段,从而使父类和子类共享这一段代码。2011年10月26日 09:44
-
1.同一段吧。几个对象的变量是保存在堆栈里的各自的具体的实例中,代码的话只有一段吧
2.继承后应该是同一段的,除非用@override把函数重写了,继承的话本质上应该是之类的对象中包含了一个父类的对象
我感觉JAVA实现的内部结构和C C++应该差别不大,2011年10月26日 09:36
相关推荐
在探讨“函数之间调用同一个对象方法”的主题时,我们首先需要理解几个核心概念:函数、对象、方法以及事件监听器。这些概念是现代编程语言,尤其是面向对象编程语言中的基石,它们共同构建了复杂软件系统的逻辑框架...
这段Java代码首先创建了一个`PythonInterpreter`实例,然后使用`execfile`方法加载了`addition.py`文件。接着,通过`get`方法获取了Python的`add`函数,并使用`__call__`方法调用该函数,传入两个`PyInteger`对象...
文件名中提到的"加了几个核函数",意味着该实现可能包含了多种常用的核函数,如线性核、多项式核、高斯核(RBF,Radial Basis Function)等。线性核适用于线性可分问题,多项式核可以处理某些非线性问题,而高斯核...
**对象**: 在Java中,对象是类的一个实例,即根据类的模板创建出来的具体实体。每个对象都有自己的属性(如字段)和方法。例如,`Student` 类可以用于创建具体的 `Student` 对象。 **引用**: 引用则是指向对象的...
通过这样的Java代码,开发者可以方便地在自己的程序中调用伽玛函数或不完全伽玛函数,而无需依赖外部库。这种自定义实现不仅可以加深对伽玛函数理解,还可以在某些特定场景下提供更高的性能和灵活性。
在"java试验,random函数调用等问题"中,我们可能涉及以下几个关键知识点: 1. **Random类的创建**: 在Java中,我们首先需要通过`new Random()`来实例化一个`Random`对象,然后才能调用它的方法来生成随机数。...
在这段代码中,`Handler`类的构造函数被声明为私有,以确保外部无法直接创建新的`Handler`对象。`getHandler()`方法则负责管理单例实例的创建和分发。 #### 四、总结 私有构造函数在Java中是一种非常有用的设计...
用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天通信演示代码 2个目标文件...
` 这段代码使用lambda表达式过滤了一个整数列表,并打印出所有大于10的元素。 2. **函数接口**:为支持lambda表达式,Java 8引入了函数接口,如`java.util.function.Function`, `Predicate`, `Consumer`等。这些...
描述中的链接指向了一个CSDN博客文章,虽然具体内容无法在此直接引用,但通常这种调用是通过JNI(Java Native Interface)实现的。JNI允许Java代码调用本地(如C++)代码,并反之亦然。首先,你需要在Java端创建一个...
这段代码通常被包含在一个或多个源文件中。例如,在C语言中,你可以创建一个名为`os_calls.c`的源文件,其中包含了多个函数的定义,如`readFileToClob`、`readFileToTable`、`writeFileFromParams`和`systemCall`等...
提到“三个整数的最大值”,在Java中,可以使用Math.max()函数求两个数的最大值,但对于三个数,需要编写一段逻辑,比较三个数并返回最大值。这可以锻炼学习者的逻辑思维能力和基本函数的运用。 至于“星期几的英文...
为了使示例可重复运行,示例中还包含了一段代码用于在每次运行后删除目标表,即调用`execStatement()`执行`DROP TABLE`命令。 6. **注意点**: - 在使用Kettle API时,通常需要初始化环境,如示例中的`EnvUtil....
根据给定的信息,本文将详细解释如何在Java中构建一个圆形类(Circle)以及一个圆柱形类(Column),并且这两个类之间的继承关系。我们还会分析提供的代码,并深入探讨其中涉及的重要概念,如面向对象编程的基本特性...
示例代码段展示了如何在Java中初始化数据、创建实例并调用MATLAB生成的plotter类的drawplot()函数来绘制y=x^2的图像。代码中使用了try块以处理可能的异常,同时通过for循环设置x值,并调用set()方法在MWNumericArray...
在Pentaho kettle中使用JavaScript调用Java类的方法是一种扩展kettle处理能力的方式。这个过程涉及几个关键的步骤,包括准备环境、编写正确的调用代码以及设置好相关的执行环境。本文将围绕这些方面展开,详细讲解在...
本文将通过一个实际项目的案例,探讨Java对象的构建与初始化过程,并从中总结出设计Java类时需遵循的重要原则。 #### 案例描述 案例源自一个项目中的抽象对话框基类——`BaseDlg`的设计与实现。该基类旨在简化...
当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。 20、abstract class和interface有什么区别? ...
- 使用final修饰符可以明确表明一个类或方法的最终状态,有助于其他开发者理解代码意图。 - 编译器的内联优化可以减少方法调用的开销,提高代码的执行速度。 #### 五、优先使用局部变量 局部变量存储在栈中,访问...