use*_*114 3 java arrays oop methods
您有没有办法在两个不同的类之间使用相同的add()方法(向数组添加内容)?例如,我的湖类有以下add()方法:
public void add (Fish aCatchableThing)
{
if (numThings < catchableThings.length)
{
catchableThings[numThings++] = aCatchableThing;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用以下代码:
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());
Run Code Online (Sandbox Code Playgroud)
这将是有效的(使用继承,即EndangeredFish extends fish, and Perch extends EndangeredFish )
对于所有添加的鱼,但它不起作用的对象(即Tire,RustyChain,Treasure).Tire,RustyChain和Treasure是扩展SunkenObject类的类,它实际上是空的:
public abstract class SunkenObject
{
}
Run Code Online (Sandbox Code Playgroud)
我尝试在湖类中创建第二个添加方法但是没有成功.我想知道是否有人对这如何运作有任何想法?在那里我可以将所有东西(即鱼和沉没对象)添加到同一个数组中,以便何时
public void listAllThings()
{
System.out.println(" " + this + " as follows:");
for (int i=0; i<numThings; i++)
{
System.out.println(" " + catchableThings[i]);
System.out.println();
}
Run Code Online (Sandbox Code Playgroud)
实现数组中的所有内容都打印出来.谢谢您的帮助
如果有人想知道这是我试过的add()方法
public void add (SunkenObject sunkenObject)
{
if (numThings < catchableThings.length)
{
catchableThings[numThings++] = sunkenObject;
}
}
Run Code Online (Sandbox Code Playgroud)
答案几乎就在问题中.您希望能够添加到湖中的不仅仅是实例Fish
.你想要添加的是一个可捕获的东西.所以你需要定义这样的类型.
Fish
并SunkenObject
因此应延伸命名为共同的基类CatchableThing
,或应该实现所谓的接口CatchableThing
.
并且add()
方法的签名应该是
public void add(CatchableThing aCatchableThing)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
110 次 |
最近记录: |