gpt4 book ai didi

Java方法参数重写

转载 作者:行者123 更新时间:2023-12-01 14:28:02 26 4
gpt4 key购买 nike

我肯定写错了,因为到目前为止还没有人理解我的观点。从一开始,以下就是所需的所有详细信息:

我们有一个名为 Gem 的类,它有两个子类:TimeGemNormalGem

现在我们在类之外有一个名为 Gemlist 的数组

public Gem[][] GemList = new Gem[8][8];

现在Gem有一个方法:

public void swapGem(Gem A, boolean Auto, boolean isGame);

还有另外两种方法:

public void swapGem(TimeGem A, boolean Auto, boolean isGame);
public void swapGem(NormalGem A, boolean Auto, boolean isGame);

我保存在GemList中的对象是TimeGemNormalGem类型。当我为其中一个调用 swapGem 时,我不想调用

public void swapGem(Gem A, boolean Auto, boolean isGame);

但是它实际上是一个(这两个派生的之一)。继承在这里几乎是无关紧要的(我一开始就提到它是不好的),因为我们想要的只是使用正确的参数调用该方法。

最佳答案

您没有覆盖,您正在重载 swapGem,这就是为什么您在数组中看不到另一个 swapGem。

要覆盖你必须做这样的事情

class Gem {
public void swapGem(Gem A, boolean Auto, boolean isGame){
//code here
}
}

class TimeGem extends Gem{
@Override
public void swapGem(Gem A, boolean Auto, boolean isGame){
//
}
}

所以在你的客户类别中

Game.LevelReference.GemList[x][y].swapGem(Game.LevelReference.GemList[x][y - 1], true, true);

然后将调用重写方法。这是多态性的一个例子,你在运行时知道将调用什么方法。

关于Java方法参数重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17033658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com