【发布时间】:2014-03-23 22:46:59
【问题描述】:
您好,有没有一种方法可以在两个不同的类之间使用相同的 add() 方法(将内容添加到数组中)?例如我的湖类有以下 add() 方法:
public void add (Fish aCatchableThing)
{
if (numThings < catchableThings.length)
{
catchableThings[numThings++] = aCatchableThing;
}
}
我正在尝试使用以下代码使其工作:
public class FishingTestProgram3
{
public static void main(String [] args)
{
Lake weirdLake = new Lake(21);
weirdLake.add(new AuroraTrout(76, 6.1f));
weirdLake.add(new Tire());
weirdLake.add(new Perch(32, 0.4f));
weirdLake.add(new Bass(20, 0.9f));
weirdLake.add(new Treasure());
weirdLake.add(new Perch(30, 0.4f));
weirdLake.add(new AtlanticWhiteFish(140, 7.4f));
weirdLake.add(new RustyChain());
weirdLake.add(new Bass(15, 0.3f));
weirdLake.add(new Tire());
这将起作用(使用继承,即EndangeredFish extends fish, and Perch extends EndangeredFish ) 用于添加的所有鱼,但它不适用于对象(即轮胎,RustyChain,Treasure)。Tire,RustyChain 和 Treasure 是扩展 SunkenObject 类的类字面上是空的:
public abstract class SunkenObject
{
}
我尝试在 Lake 类中创建第二个 add 方法,但没有成功。我想知道是否有人对这如何工作有任何想法?我可以将所有东西(即鱼和沉没的物体)添加到同一个数组中,这样当
public void listAllThings()
{
System.out.println(" " + this + " as follows:");
for (int i=0; i<numThings; i++)
{
System.out.println(" " + catchableThings[i]);
System.out.println();
}
实现了数组中的所有内容都会打印出来。谢谢你的帮助
如果有人想知道这是我尝试过的 add() 方法
public void add (SunkenObject sunkenObject)
{
if (numThings < catchableThings.length)
{
catchableThings[numThings++] = sunkenObject;
}
}
【问题讨论】:
-
既然您将
Fish和SunkenObject添加到catchableThings,那么我建议您只保留一个一个添加方法。就像您的情况一样,逻辑错误可能会从任何地方弹出。 让所有的鱼和沉没对象继承CatchableThing。