【发布时间】:2013-05-30 15:08:01
【问题描述】:
class A {}
class B extends A {}
您好,我正在学习 Java,我正在尝试理解为什么会这样:
A[] tab = new A[10];
tab[0] = new B();
不是这个:
A[] tab = new B[10];
tab[0] = new A();
A[] tab = new B[10]; 这一行表示编译器在内存中为 B 预订了 10 个位置。 tab[0] = new A() 将 tab[0] 设置为等于一个新的 A 对象,该对象小于 (?) B (B extends A)。
为什么会出现ArrayStoreException: A 错误?它是如何工作的?
【问题讨论】:
-
想想吧。如果
Dog extends Animal则狗是动物,但并非所有动物都是狗。
标签: java arrays object memory compiler-construction