Как использовать экземпляр из одного класса в другом классе: Greenfoot

Сейчас я использую Greenfoot, изучаю Java. Я очень дурацкий, когда дело доходит до статического / нестатического, и я тоже сомневаюсь в инстансах.

В Greenfoot у меня есть мировой класс, назовем его World. Теперь у меня есть другой класс, названный Car и один подкласс, Redcar. Наконец, у меня есть класс Button.

Если вы знакомы с Greenfoot, я создал экземпляр Redcar с именем redcar (просто строчные) и добавил его в World с помощью addObject();

public World() { 

    super(1000, 200, 1); 

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

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

В классе автомобилей, который содержит следующее

public class Car extends Actor {

    int carSpeed = 0;

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

Если вызывается из Redcar, он будет перемещать Redcar дальше каждый раз, когда вызывается диск. Я хочу, чтобы это произошло, когда на кнопку нажимают однако. В моем классе World, я хочу настроить что-то вроде этого:

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

Однако, если он помещен в конструктор World, он не запускается при запуске проекта Greenfoot. Я попытался поместить его в цикл while, чтобы он постоянно искал щелчок мыши, но это не сработало, на самом деле это фактически приводит к сбою Greenfoot.

Извините, если этот вопрос озадачен, я исправлю его, если это будет необходимо. В основном, мой вопрос заключается в следующем. Как я могу вызвать метод класса для работы с экземпляром, ИЗ другого класса? Например, метод drive(), работающий на redcar (instance) из класса кнопки

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);
}
Другие вопросы по тегам