如果我有一个A类,它是B类和C类的超类,我有
A as[] = new A[1];
那么占用A,B或C大小的空间是多少?
答案 0 :(得分:2)
那么占用A,B或C大小的空间是多少?
这没有意义。
as
是A
类型引用的数组。它应该是[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
的内存要求。