我有两个亚类从一个超类阵列的两个不同的亚类
public class A {
}
public class B extends A{
int weight;
}
public class C extends A{
int height;
}
现在,我需要有一个阵列命名myArray的一些细胞是从类B和其他是从类C.
A[10] myArray;
myArray[2]=new B();
myArray[3]=new C();
myArray[2].weight=40;
myArray[3].height=60;
怎么可能?我的方式是否正确?
它编译? – smac89
'A'没有名为'weight'或'height'的成员,所以他们不能设置。编译器知道的关于'myArray'的唯一事情就是其中的所有内容都扩展了'A'。而已。你可以这样做:'((B)myArray [2]).weight = 40',因为编译器可以在运行时确定'myArray [2]'也是'B',但是必须是cast。 – Tibrogargan
如果你投B和C到A它应该工作。 – redxef