【发布时间】:2015-06-09 19:49:50
【问题描述】:
创建对象时,Java 会创建类属性的副本,但是,在内存中,方法会发生什么情况? Java 是创建这些代码的副本还是只为所有对象创建这些代码的一个副本?
【问题讨论】:
-
@cybersam 你的“重复”是关于继承,关于实例化的问题。
创建对象时,Java 会创建类属性的副本,但是,在内存中,方法会发生什么情况? Java 是创建这些代码的副本还是只为所有对象创建这些代码的一个副本?
【问题讨论】:
他们不是。因为 Java 是静态类型的,所以对象在 VM 中看起来像这样:
class_id,
field0,
field1,
...
然后调用方法的代码可以与类相关联,而不是对象,因此不需要重复。我猜您来自 Python 或 Javascript 之类的语言,您可以在其中重新分配实例上的方法?在 Java 中,您倾向于使用装饰器来执行此操作。
【讨论】: