-1

如果我有一个 A 类,它是 B 类和 C 类的超类,我有

A as[] = new A[1];

那么 A、B 或 C 的大小将占用多少空间?

4

2 回答 2

2

那么 A、B 或 C 的大小将占用多少空间?

那没有意义。

as是一个A类型引用数组。应该是[space a reference would take] X 1,因为您的数组大小为 1。

于 2012-11-07T04:37:51.417 回答
1

对象as是一个长度为 1 的数组。在 Java 中,包含对象的数组实际上包含对对象的引用,根据硬件架构,引用占用 4 或 8 个字节。

您尚未分配任何类型A的对象或其任何子类型,因此使用的总内存是单个引用占用的内存(4 或 8 个字节)。

如果你要做

as[0] = new A();

那么你还会A占用多少内存,这取决于A包含的内容。如果你做了

as[0] = new B();

内存使用量将是任何B占用,这取决于B's 成员,但将是 ≥A的内存要求。

于 2012-11-07T04:49:07.557 回答