Вопрос по ООП non-static variable this cannot be referenced from a static context

166
05 апреля 2022, 11:00

Всем привет, возникает ошибка:

"Error:(6, 21) java: non-static variable this cannot be referenced from a static context".

В данной строчке: Car myCar = new Car();

public class Main {
    public static void main(String[] args) {
        Car myCar = new Car();
        myCar.start();
        myCar.stop();
        myCar.start();
        myCar.drive(5);
        myCar.stop();
        myCar.drive(5);
    }
    public class Car {
        boolean driveOn;
        int allLong = 0;
        public void start() {
            System.out.println("Мы включили двигатель!");
            driveOn = true;
        }
        public void stop() {
            System.out.println("Мы выключили двигатель");
            driveOn = false;
        }
        public int drive(int howLong) {
            if (driveOn = true) {
                allLong += howLong;
                System.out.println("Мы проехали " + allLong + " километров!");
                return allLong;
            }
            else{
                System.out.println("Двигатель выключен!");
                return allLong;
            }
        }
    }
}

Попробовал исправить и получилось только так:

public static class Car

Кто нибудь может помочь в объяснении данной проблемы? Если ли другие способы решения этой проблемы?

Answer 1

Так работает нестатический внутренний класс в Java. Его объекты имеют смысл только в контексте объекта родительского класса, что отсутствует в статическом методе main.

Вынесите класс Car из Main.

READ ALSO
Проверка вводимых данных BufferedReader

Проверка вводимых данных BufferedReader

Начал изучать джавуДобрался до ввода с консоли

218
Get() и Set() методы [дубликат]

Get() и Set() методы [дубликат]

Зачем делать private переменные и при этом создавать для них гэттеры и сеттеры?

176
Запуск метода в новом потоке Java

Запуск метода в новом потоке Java

столкнулся с такой проблемой, у меня есть контейнер (ListView) и я читаю в него файл, ну соответственно, когда файл большой программа виснетЧто...

79