如果我有一个 A 类,它是 B 类和 C 类的超类,我有
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
's 成员,但将是 ≥A
的内存要求。