gpt4 book ai didi

java - 当从类创建对象时,公共(public) Java 方法实际上会被复制到新对象中吗?

转载 作者:行者123 更新时间:2023-12-01 07:07:24 26 4
gpt4 key购买 nike

是的,纯粹的理论问题。我不太清楚当我们从定义的类创建一个新对象时到底发生了什么。

对于实例变量,每次创建新的内存位置似乎是合理的,因为它们可以具有不同的值。

但我有一个想法,就内存而言,每次将所有类的方法复制到新对象是没有任何意义的。那么java在方法调用期间实际上使用了类方法还是在新对象中创建相同方法的副本?

最佳答案

像这样的类方法:

public class MyClass {
public void myMethod(int arg) { }
}

在概念上可以被认为与 JVM 级别的相同:

public static void myMethod(MyClass this, int arg) { }

this 参数是根据您调用方法的对象隐式传递的。从这个定义可以清楚地看出,您不需要为类的每个实例都有一个单独的副本。

正如安迪·托马斯(Andy Thomas)在评论中提到的那样,在低级别上还有更多细微差别;对于重写的方法,必须在运行时保留一些信息,而静态方法则不存在这些信息。

关于java - 当从类创建对象时,公共(public) Java 方法实际上会被复制到新对象中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21053285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com