Java中基于类的数组中增强的FoR循环
我想知道的是如何基于数组中对象的类为数组编写增强的for循环。我知道如何根据索引号进行for循环,比如它是奇数还是偶数,但我正在寻找基于类的for循环。例如:Java中基于类的数组中增强的FoR循环,java,Java,我想知道的是如何基于数组中对象的类为数组编写增强的for循环。我知道如何根据索引号进行for循环,比如它是奇数还是偶数,但我正在寻找基于类的for循环。例如: Array[] Kind = new Array[3]; Kind[0] = new Fruit(xxx,yyy,zzz) Kind[1] = new Veg(xxx,yyy,zzz) Kind[2] = new Fruit(xxx,yyy,zzz) Kind[3] = new Veg(xxx,yyy,zzz) 水果和蔬菜类是从Kind
Array[] Kind = new Array[3];
Kind[0] = new Fruit(xxx,yyy,zzz)
Kind[1] = new Veg(xxx,yyy,zzz)
Kind[2] = new Fruit(xxx,yyy,zzz)
Kind[3] = new Veg(xxx,yyy,zzz)
水果和蔬菜类是从Kind类创建和扩展的。我需要写一个FOR循环,输出一些水果和一些不同的蔬菜 首先,您需要修复程序:与其声明数组数组
array[]
,不如声明基类数组Kind
,如下所示:
Kind[] kind = new Kind[4];
kind[0] = new Fruit(xxx,yyy,zzz);
kind[1] = new Veg(xxx,yyy,zzz);
kind[2] = new Fruit(xxx,yyy,zzz);
kind[3] = new Veg(xxx,yyy,zzz);
for (Kind item : kind) {
System.out.println(item.toString());
}
现在,如果您想为Kind
的Fruit
和Veg
子类打印不同的内容,请根据需要重写这两个类的toString
。这将允许您查看基类的实例Kind
,并将打印发送到相应类中的方法:
public class Fruit extends Kind {
@Override
public string toString() {
return "Fruit "+ ... // Fill in the text that you wish to print
}
}
public class Veg extends Kind {
@Override
public string toString() {
return "Veg "+ ... // Fill in the text that you wish to print
}
}
打印可以这样做:
Kind[] kind = new Kind[4];
kind[0] = new Fruit(xxx,yyy,zzz);
kind[1] = new Veg(xxx,yyy,zzz);
kind[2] = new Fruit(xxx,yyy,zzz);
kind[3] = new Veg(xxx,yyy,zzz);
for (Kind item : kind) {
System.out.println(item.toString());
}
上面对
toString()
的调用是可选的-您可以调用System.out.println(项)代码>也是。我添加了对toString()
的调用,以表明其中没有“魔力”。。。水果和蔬菜应该知道如何处理这个问题。一般来说,如果您正在检查instanceof,那么您的OO设计出了问题。Kind
是一个类吗?按照您编写的方式,Array
是您的类,Kind
是一个变量名。另外,您在数组中只分配了3个元素,并试图分配给4个元素,因此您将得到一个越界异常。也许你的意思是Kind[]数组=新的种类[4]
然后设置数组[0]=
…您复制了OP的错误,初始化数组时只保存3个对象,而不是给定的4个对象。@Blazto在初始化时不保存。您将初始化为该长度。[3] 是位于[0]、[1]、[2]的3个对象。