如何在两个不同的类中使用相同的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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |