クラスBとCのスーパークラスであるクラスAがあり、
A as[] = new A[1];
では、A、B、またはCのサイズを占めるスペースはどれくらいになるでしょうか。
では、A、B、またはCのサイズを占めるスペースはどれくらいになるでしょうか。
それは意味がありません。
as
A
型参照の配列です。[space a reference would take] X 1
配列のサイズは1なので、そうする必要があります。
オブジェクトas
は長さ1の配列です。Javaでは、オブジェクトを含む配列には実際にはオブジェクトへの参照が含まれ、参照にはハードウェアアーキテクチャに応じて4バイトまたは8バイトが必要です。
A
タイプまたはそのサブタイプのオブジェクトを割り当てていないため、使用されるメモリの合計は、単一の参照(4または8バイト)によって占有されているメモリです。
あなたがするなら
as[0] = new A();
A
その場合、何が含まれているかによって異なりますが、さらに多くのメモリを消費することになりA
ます。あなたがした場合
as[0] = new B();
メモリ使用量は、のメンバーB
によって異なりますB
が、≥A
のメモリ要件になります。