gpt4 book ai didi

java - JVM 内存分配

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:28:34 25 4
gpt4 key购买 nike

您好,我有一个关于继承的问题。在 Java 中,子类对象内部有其父类(super class)的对象?

当JVM为子类对象分配空间时,为父类(super class)字段/方法分配空间?谢谢。

例子:

class Bar {
public String field;

public Bar() {
this.field = "Bar";
}
}

class Foo extends Bar {
public String field;

public Foo() {
this.field = "Foo";
}

public void printFields() {
System.out.println("Base: " + super.field);
System.out.println("This: " + this.field);
}
}

在执行中,将打印“Bar”和“Foo”。 Java 在哪里分配空间来维护“字段”的两个值?

最佳答案

是的,Java 将为两个对象引用分配空间——一个用于Foo.field,另一个用于Bar.field。粗略地说,这可以是一种在内存中可视化 Foo 实例的方法:

[header] (references Foo.class, Bar.class, Object.class, among other details)
[Section for Bar]:
Field, declared type String, referencing a `java.lang.String` with value "Bar"
[Section for Foo]:
Field, declared type String, referencing a `java.lang.String` with value "Foo"

这些字段的偏移量为 JVM 所知,并在读取/写入它们时使用。

请注意,这并不意味着 Foo 包含一个 Bar,而是 Foo 是一个 Bar 等等.

关于java - JVM 内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31147632/

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