You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中继承对象的堆内存分配:子类对象存储机制咨询

继承对象在JVM堆中的存储机制

当执行B b = new B(1, "b");时,JVM不会同时创建A类对象和B类对象,堆中只会生成一个单独的B类实例,这个实例包含了父类A的所有非静态成员变量,再加上自身的成员变量。

具体细节如下:

  • 从内存布局上看,B对象的堆内存会先分配父类A的成员空间(这里就是private int id),之后再分配自身的成员空间(private String name)。
  • 构造函数中调用super(id)的作用,是初始化当前B对象里属于父类A的那部分属性,而不是生成一个独立的A对象。父类构造函数的本质是协助完成子类对象的完整初始化。
  • 类的元数据(比如类的结构、方法定义等)会存储在JVM的方法区中,A和B的类元数据是分开的,但堆中始终只有一个B实例。

你提供的代码示例:

public class A {
  private int id;
  public A(int id){
    this.id=id;
  }
}

public class B extends A {
  private String name;
  public B(int id, String name){
    super(id);
    this.name=name;
  }
}

内容的提问来源于stack exchange,提问作者Muhammadqodir Yusupov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 15:50:26