Как использовать экземпляр из одного класса в другом классе: 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);
}