-1

クラスBとCのスーパークラスであるクラスAがあり、

A as[] = new A[1];

では、A、B、またはCのサイズを占めるスペースはどれくらいになるでしょうか。

4

2 に答える 2

2

では、A、B、またはCのサイズを占めるスペースはどれくらいになるでしょうか。

それは意味がありません。

asA型参照の配列です。[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が、≥Aのメモリ要件になります。

于 2012-11-07T04:49:07.557 に答える