容器类型超类

时间:2012-11-07 04:30:48

标签: java oop

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

A as[] = new A[1];

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

2 个答案:

答案 0 :(得分:2)

  

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

这没有意义。

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

答案 1 :(得分:1)

对象as是一个长度为1的数组。在Java中,包含对象的数组实际上包含引用到对象,引用需要4或8个字节,具体取决于硬件体系结构。

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

如果你要做

as[0] = new A();

然后你还会有更多的内存A占用,这取决于A包含的内容。如果你做了

as[0] = new B();

内存使用量是B占用的内容,这取决于B的成员,但会有A的内存要求。