我有一点问题。

我有一个3类看起来像这样:

public class Gun{
    public void Shot(){
        // shoot code
    }

    public void RenderGun()
    {
        // render code
    }

    // more methods
}


public class GameManager
{
    Gun gun;

    public GameManager()
    {
        gun = new Gun();
    }

    // methods using GunClass methods.
}

public class HudScreen
{
    Gun gun;

    public HudScreen()
    {
        gun = new Gun();
    }

    public void GunShotButton()
    {
        gun.Shoot();
    }
}


问题是我有两个Gun对象,我想拥有一个,但是在HudScreen和GameManager类中都使用它。

因此,如果我在GameManager中创建了一个新的Gun对象,如何从HudScreen类中“调用”该对象?



谢谢,MM。

最佳答案

GameManager构造函数

 public GameManager(Gun gun){
     this.gun = gun;
 }


HudScreen构造函数

public HudScreen(Gun gun){
      this.gun = gun;
 }


在创建Gun对象的主要方法中,可以将其传递给GameManager和HudScreen的构造函数

 public static void main() {
      Gun gun = new Gun();
      HudScreen hudScreen = new HudScreen(gun);
      GameManager gameManager = new GameManager(gun)
   }


如果您不想以相同的方法创建GameManager和HudScreen,但仍想使用相同的Gun对象,则可以采用这种方式
1.初始化Gun对象
2.在GameManager和Hudscreen上,您可以将其传递给构造函数,也可以将其直接传递给这些类中的方法。
例如假设您想让GameManager构造函数接收新创建的Gun,并将同一把Gun传递给Hudscreen.GunShotButton。希望您对此有所了解-

public class Gun{
    public void Shot(){
        // shoot code
    }

    public void RenderGun()
    {
        // render code
    }

    // more methods
}


public class GameManager
{
    Gun gun;

    public GameManager(Gun gun)
    {
        this.gun =gun;
    }

    // methods using GunClass methods.
}

public class HudScreen
{
    public HudScreen()
    {
    }

    public void GunShotButton(Gun gun)
    {
        gun.Shoot();
    }
}

关于java - 调用在另一个类中创建的对象的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43112259/

10-09 09:41