【问题标题】:How to Use an Instance from One Class in Another Class: Greenfoot如何在另一个类中使用一个类中的实例:Greenfoot
【发布时间】:2014-05-15 00:22:42
【问题描述】:

我目前正在使用 Greenfoot,正在学习 Java。当谈到静态/非静态时,我很笨,而且我对实例也很不确定。

在Greenfoot,我有一个世界级的,我们称之为World。现在我有另一个类,名为 Car 和一个子类,Redcar。最后,我有一个 Button 类。

如果你熟悉 Greenfoot,我创建了一个 Redcar 实例,命名为 redcar(只是小写)并通过 addObject() 将其添加到 World

public World() { 

    super(1000, 200, 1); 

    Redcar redcar = new Redcar();
    Button button = new Button();

    addObject(redcar, 45, 45);
    addObject(button, 960, 175);
}

Car 类中,其中包含以下内容

public class Car extends Actor {

    int carSpeed = 0;

    public void drive() {
        carSpeed++;
        move(carSpeed);
    }
}

如果从 Redcar 调用,则每次调用驱动器时都会将 Redcar 移动得更远。但是,我希望在单击 Button 时发生这种情况。在我的 World 类中,我想设置一些效果如下:

if (Greenfoot.mouseClicked(button)) {
    redcar.drive();
}

但是,如果将其放在 World 构造函数中,则在运行 Greenfoot 项目时它不会运行。我试过把它放在一个while循环中,让它不断寻找鼠标点击,但这不起作用,实际上它实际上让Greenfoot崩溃了。

对不起,如果这个问题的措辞令人困惑,我会在需要时进行修改。基本上,我的问题是这样的。 如何从不同的类调用类的方法来处理实例?例如,在按钮类中处理 redcar(实例)的 drive() 方法

【问题讨论】:

    标签: java methods instance greenfoot


    【解决方案1】:

    好吧,如果我理解您的问题,您需要提供实例的可见性;像这样的,

    private Redcar redcar;                   // <-- if you want to access redcar in World.
    public World() { 
      super(1000, 200, 1); 
      redcar = new Redcar();                    // <-- Use the redcar field
      Button button = new Button(this, redcar); // <-- if you want to access this World  
                                                // instance and redcar in Button.
      addObject(redcar, 45, 45);
      addObject(button, 960, 175);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-19
      • 1970-01-01
      • 2020-10-16
      • 1970-01-01
      • 1970-01-01
      • 2013-05-22
      • 2018-11-02
      • 1970-01-01
      相关资源
      最近更新 更多