【发布时间】:2014-01-29 22:56:01
【问题描述】:
是的,纯理论问题。当我们从定义的类创建一个新对象时,我并不清楚到底发生了什么。
例如变量,每次创建新的内存位置似乎是合理的,因为它们可以有不同的值。
但我认为每次都将所有类的方法复制到新对象在内存方面没有任何意义。那么java在方法调用期间实际上是使用类方法还是在新对象中创建相同方法的副本?
【问题讨论】:
-
没有。方法通过对象引用(如果有)调用,如果没有实例,则通过静态引用(例如类)调用。
-
值得注意的是,方法是否公开与此无关。是否是静态的(显然静态方法不会被复制)。
-
@Kuba Spatny 不,这不是我想要的。
-
@user3081519 不是吗?正如安迪·托马斯在公认答案的 cmets 中指出的那样——这并不是那么简单。链接中包含 IMO 更多详细信息,例如
On a deeper level, when the compiler puts an object together, it contains several pointers to methods. When those methods are executed it follows the pointers and executes the code at the far end.