我在 Java 中创建了一个名为 Farm 的类,其中包含动物列表(牛、 pig 和小鸡)。 myFarm 是 Farm 类的对象数组,其中包含 NamedCow、pig 和chick 类的对象。
我的示例代码在这里:
import java.util.*;
class Farm
{
private ArrayList< Animal > myFarm;
Farm()
{
myFarm=new ArrayList<Animal>();
myFarm.add(new NamedCow("cow","Elsie","moo"));
myFarm.add(new Chick("chick","cheep","cluck"));
myFarm.add(new Pig("pig","oink"));
}
public void animalSounds(){
Animal temp;
for(int i = 0; i < myFarm.size(); i++){
temp = myFarm.get(i);
System.out.println(temp.getType() + " goes " + temp.getSound());
}
NamedCow named = (NamedCow)myFarm.get(0);
System.out.println(named.getName());
}
}
我不明白代码中的一行:NamedCow name = (NamedCow)myFarm.get(0); 这里右侧括号内的 NamedCow 的含义是什么。有谁可以告诉我吗?
最佳答案
myFarm
是 ArrayList<Animal>
.
在行
NamedCow named = (NamedCow)myFarm.get(0);
您假设 ArrayList
中第一个索引中的对象属于类型 NamedCow
,基于该假设,您正在类型转换来自 Animal
的对象至NamedCow
.
转换插入一个运行时检查 named
被分配了 NamedCow
,请注意,如果不是这种情况,则会抛出运行时异常。
我强烈建议您阅读有关 Inheritance 的教程更好地理解这一点,因为它确实是编程的基础。
关于java - Java程序需要的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22498257/