Тесты Протестировать код
Программирование Аналитика Дизайн Маркетинг Управление проектами
16 Авг 2023
2 мин
123

Работа со статическими элементами в классах Java

Пройдите тест, узнайте какой профессии подходите

Существует типичная проблема, с которой сталкиваются новички при изучении Java: неясность смысла и использования ключевого слова static. Давайте рассмотрим

Существует типичная проблема, с которой сталкиваются новички при изучении Java: неясность смысла и использования ключевого слова static. Давайте рассмотрим это на примере.

public class MyClass {
    MyObject myObject = new MyObject();

    public static void main(String args[]) {
        myObject.doSomething();
    }
}

При компиляции такого кода возникнет ошибка «Cannot access non-static field in static method main». Почему так происходит?

Суть проблемы в том, что статические методы (как, например, main) не имеют доступа к нестатическим переменным класса. В нашем случае myObject — это нестатическая переменная, и статический метод main не имеет к ней доступа.

Чтобы исправить ошибку, можно сделать переменную myObject статической:

public class MyClass {
    static MyObject myObject = new MyObject();

    public static void main(String args[]) {
        myObject.doSomething();
    }
}

Теперь код будет работать корректно. Но что же делает ключевое слово static?

Статические переменные и методы принадлежат самому классу, а не его экземплярам. Это значит, что статическая переменная будет иметь одно и то же значение для всех экземпляров класса. Если статическую переменную изменить в одном экземпляре класса, она изменится для всех других экземпляров.

Статические методы, в свою очередь, могут работать только со статическими переменными. Они не могут обращаться к нестатическим переменным или методам.

Таким образом, ключевое слово static имеет важное значение в Java. Оно позволяет создавать переменные и методы, которые принадлежат самому классу, а не его экземплярам, и которые доступны всем экземплярам этого класса.

Добавить комментарий