如何调用在另一个类中创建的一个类的对象?

时间:2014-04-03 15:06:11

标签: java

我只是开始编码。我想写一个游戏代码,我有一个问题: 我想在另一个类中调用一个类的对象,但是我的代码存在错误。

我有三个类:Game,Player,commandReader。

班级球员:

public class Player{

   public void moveUp(){
   ...
   }
}

我在Game类中创建了一个Player类对象:

public class Game{

   public Player player;

   private Game(){
      player = new Player;
   }

   // methods omitted
}

我想在名为commandReader的另一个类中调用对象“player”:

public class commandReader{

   public readCommand(String command){
      if(command == "Up"){
         player.moveUp();
      }
   }
}

但运行代码时出错。对于类commandReader,对象播放器是未知的。我应该提一下,我不想在类commandReader中创建另一个类Player的对象,我只使用在Game类中创建的对象。 我怎么称呼它?

3 个答案:

答案 0 :(得分:1)

您必须将对游戏类的引用传递给commandReader的构造函数。

Game game;

public commandReader(Game game)
{
    this.game = game;
}

然后你可以打电话

game.player.moveUp();

答案 1 :(得分:0)

嗯,有一些错误。

在课程游戏中,您必须以这种方式声明变量播放器:

public Player player;

然后在Game类的构造函数中

player = new Player();

无法调用哪个,因为在Player类中没有构造函数

class Player{

  //CONSTRUCTOR (initialize the object)
  public Player(){

  }

  [...]

}

在调整之后,您可以使用

从commandReader调用播放器
Game.player.moveUp();//Only if it's a static variable

希望你能理解新的东西。

[UPDATE]

你还没有在Game类中添加构造函数,因为它必须是

public Game(){
  [...]
}

而不是

private Game(){
  [...]
}

然后在commandReader中你必须通过

创建一个Game对象
Game game = new Game();

然后是玩家

game.player.moveUp();

答案 2 :(得分:0)

commandReader类不会在任何地方显示游戏对象。

public class commandReader{

   Game myGame = new Game();
   public readCommand(String command){
      if(command == "Up"){
      myGame.player.moveUp();
  }

} }