我想创建一个数组,通过使用类Schiff
(Armada),我可以使用该数组创建类Flotte
(Ship)的一些实例。不知怎的,它不起作用。哪种方法更有用? addShiff
或addSchiff2
?
public class Schiff
{
private String material;
private int kanonen;
private int ursprungsMäste;
private int mästeStehenNoch;
public Schiff (String material, int kanonen, int mäste)
{
this.material = material;
this.kanonen = kanonen;
ursprungsMäste = mäste;
mästeStehenNoch = mäste;
}
public String gibMaterial()
{
return material;
}
public void mastGetroffen(int wieVieleTreffer)
{
mästeStehenNoch = mästeStehenNoch - wieVieleTreffer;
}
public void wieVieleMäste ()
{
System.out.println("Es stehen noch " + mästeStehenNoch + " Mäste!");
}
}
+++++++
public class Flotte
{
private Schiff [] flottenArray;
public Flotte ()
{
flottenArray = new Schiff [100];
}
public void addSchiff (String material, int kanonen, int ursprungsMäste)
{
for (int zahl = 0; zahl<flottenArray.length; zahl++)
{
if (flottenArray[zahl] == null)
{
flottenArray[zahl] = new Schiff (material, kanonen, ursprungsMäste);
}
}
}
public void addSchiff2 (Schiff neuesSchiff)
{
for (int zahl = 0; zahl<flottenArray.length; zahl++)
{
if (flottenArray[zahl] == null)
{
flottenArray[zahl] = neuesSchiff;
}
}
}
public void gegnerischerFeuerAngriff ()
{
for (Schiff schiff : flotte)
{
if (schiff.gibMaterial().equals("holz"))
{
flottenArray.remove(schiff);
}
}
}
}
答案 0 :(得分:1)
究竟什么不起作用?
对我来说很好。
我的感觉是您可以删除addSchiff (String material, int kanonen, int ursprungsMäste)
方法,因为:
一个:这只是写addSchiff2(new Schiff(material, kanonen, ursprungsMäste))
的另一种方式,这也是应该如何编码以避免repeating yourself:
public void addSchiff (String material, int kanonen, int ursprungsMäste)
{
addSchiff2(new Schiff(material, kanonen, ursprungsMäste))
}
两个:如果您稍后决定向类Schiff
添加字段,则必须更改Flotte
的接口,如果您保留构造{{1}的方法来自传递参数的实例。如果您只有一个采用Schiff
实例的方法,则情况并非如此。所以摆脱Schiff
减少了阶级间的耦合,这是肠道。
Klar zur Halse!