gpt4 book ai didi

java - 在另一个类中使用对象特定变量

转载 作者:行者123 更新时间:2023-12-01 05:22:00 25 4
gpt4 key购买 nike

我一直在寻找所有其他问题,但我似乎找不到问题的答案:我需要使用一个非静态字段(对于我创建的每个对象来说都是单独的)并且我需要访问该字段另一个类中的变量。代码片段:(Enemytank.java)

public class Enemytank extends MoveableGameItem implements IStepListener, IAlarmListener
{
private Battlefield mygame;

private Enemytank enemyTank1;
private static int enemyWaveSize = 1;
private static int remainingKills = enemyWaveSize;
private static double startupEnemyHealth = 100.00;
private double enemyHealth = startupEnemyHealth;
public int enemyStage = 0;


/**
* Constructor.
*/
public Enemytank(Battlefield mg)
{
mygame = mg;
setImage("/images/enemytank.png", 27, 33);
setPosition(25, 35);
// snelheid 5, naar rechts
setDirectionSpeed(0, 4);
startMoving();
mygame.addStepListener(this);
}
}

以及我需要变量enemyStage的类:(Playertank.java)

public void collisionOccured(GameItem collidedItem)
{
Enemytank enemyTank1 = new Enemytank(mygame);
System.out.println("pt= " + enemyTank1.getEnemyStage());
if ((collidedItem instanceof Enemytank) && (playerShields > 0) && (enemyTank1.getEnemyStage() != 3))
{
this.playerShields--;
mygame.setShieldsonDashboard(playerShields);

}
else if ((collidedItem instanceof Enemytank) && (playerShields <= 0) && (enemyTank1.getEnemyStage() != 3))
{
System.out.println("hit player!");
this.playerLives--;
mygame.setLivesonDashboard(playerLives);
}
if (collidedItem instanceof Shield)
{
this.playerShields++;
mygame.setShieldsonDashboard(playerShields);
mygame.deleteGameItem(collidedItem);
this.playerUpgrades();
}
}

我现在从敌人Tank1.getEnemyStage()获得的值是0,因为我相信我用Enemytank heavenlytank1 = new Enemytank(mygame);创建了一个新对象。我如何引用现有对象并获取该特定值?敌人阶段用于检查怪物是否已死亡或即将死亡。

提前谢谢:)火焰

最佳答案

您需要利用多态性。在 GameItem 类中声明方法 getEnemyStage(或者它是接口(interface)?),然后您就可以询问 collidedItem.getEnemyStage()并从该对象中获取数据。或者,将 collidedItem 向下转换为 EnemyTank 并调用方法:((EnemyTank)collidedItem).getEnemyStage()

此外,将 enemyStage 设置为 private,无需设为 public,因为它将通过调用 getter 方法来间接访问。

if (collidedItem instanceof Enemytank && playerShields > 0 && 
((Enemytank)collidedItem).getEnemyStage() != 3) {
....
}

关于java - 在另一个类中使用对象特定变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10245198/

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