Java 为什么实例级方法仍然可以访问? 只是好奇和困惑

Java 为什么实例级方法仍然可以访问? 只是好奇和困惑,java,oop,object,Java,Oop,Object,我有点好奇这是怎么发生的? getter和setter是实例级方法,除非对象创建完成,否则它们不会在内存中 在这里的代码片段中,我使用setter来初始化对象状态, 构造函数如何获取对要应用setter的对象的引用? 主要的困惑是对象创建完成的确切点是什么 public class Solution { private String name; private int age; private float weight; public String getNa

我有点好奇这是怎么发生的?
getter和setter是实例级方法,除非对象创建完成,否则它们不会在内存中

在这里的代码片段中,我使用setter来初始化对象状态, 构造函数如何获取对要应用setter的对象的引用?
主要的困惑是对象创建完成的确切点是什么

public class Solution {

    private String name;
    private int age;
    private float weight;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public float getWeight() {
        return weight;
    }

    public void setWeight(float weight) {
        this.weight = weight;
    }

    Solution() {
        setName("Sachin");
        setAge(21);
        setWeight(76);
    }

    public static void main(String[] args) {
        Solution objectReference = new Solution();
        System.out.println(objectReference);
    }

    @Override
    public String toString() {
        return "name= " + name + "\n age= " + age + "\n weight= " + weight;
    }
}
getter和setter是实例级方法,除非对象创建完成,否则它们不会在内存中。-谁告诉你的?。方法在类被加载时被加载。因此,
setX
getX
方法在构建(实例)时已经在JVM的方法区域中可用


您可以通过在创建任何实例之前获取
解决方案的
,然后通过反射获取其所有方法并调用它们(您可能会得到一个异常,但您可以调用它们:p)

方法由Java字节码组成。对于类的每个实例都是相同的。不需要为每个对象创建单独的字节码副本。创建新对象时,无需为方法代码分配内存。堆上的对象由足够大的内存块组成,该内存块包含对象的非静态成员变量(加上JVM跟踪对象所需的一些内容)


对于方法中使用的局部变量,在调用该方法时使用堆栈

那么,首先存在的是什么?内存上的方法还是对象的状态?@shaun-是的。对象创建不同于类加载。方法作为类加载机制的一部分进行加载。所有方法在使用前都必须加载。将其加载到、、、thnx@vinod