加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何在两个不同的类中使用相同的add()方法

发布时间:2020-12-15 04:18:10 所属栏目:Java 来源:网络整理
导读:您有没有办法在两个不同的类之间使用相同的add()方法(向数组添加内容)?例如,我的湖类有以下add()方法: public void add (Fish aCatchableThing) { if (numThings catchableThings.length) { catchableThings[numThings++] = aCatchableThing; } } 我正在尝
您有没有办法在两个不同的类之间使用相同的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延伸鱼,Perch延伸EndangeredFish)所有添加的鱼,但它不起作用的对象(即Tire,RustyChain,Treasure). Tire,RustyChain和Treasure是扩展SunkenObject类的类,它实际上是空的:

public abstract class SunkenObject
{


}

我尝试在湖类中创建第二个添加方法但是没有成功.我想知道是否有人对这如何运作有任何想法?在那里我可以将所有东西(即鱼和沉没对象)添加到同一个数组中,以便何时

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的实例.你想要添加的是一个可捕获的东西.所以你需要定义这样的类型.

因此,Fish和SunkenObject应扩展名为CatchableThing的公共基类,或者应实现名为CatchableThing的接口.

并且add()方法的签名应该是

public void add(CatchableThing aCatchableThing)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读