1.
Person stu = new Student();
new了一个student对象,强制转换为了person,因为person是student的父类,所以可以进行
2.
Person[] stus = new Student[10];
左边是定义了一个Person数组,叫做stus,右边是创建了10个null,实际上啥也没干,但是右边必须能类型转换为左边。
3.
for (Person p : stus) {
p = new Teacher();
p.raiseSalary(1);
}
进行这段代码,输出全是teacher,也着实说明了右边确实没用,根据官方的话来说,右边是initializes an array of 10 Students,那你初始化不就是10个null。这块有点怪,用这个for循环的时候,p不能是student。
4.
for (int i = 0; i < 10; i++) {
stus[i]=new Teacher();
}
这个for循环会抛出异常,说Storing element of type 'Teacher' to array of 'Student' elements will produce 'ArrayStoreException'。
本文探讨了Java中对象转换与数组操作的相关概念。1. 创建了一个Student对象并将其强制转换为Person(Person是Student的父类)。2. 定义了一个Person类型的数组stus,初始化为10个null,实际并未分配Student对象。3. 使用for-each循环,尝试将数组元素设为Teacher类型,虽然编译通过,但在运行时会抛出ArrayStoreException。4. 直接将数组元素设置为Teacher类型会导致ArrayStoreException,因为数组类型为Student。

被折叠的 条评论
为什么被折叠?



