Существует типичная проблема, с которой сталкиваются новички при изучении Java: неясность смысла и использования ключевого слова static
. Давайте рассмотрим это на примере.
1 2 3 4 5 6 7 | 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
статической:
1 2 3 4 5 6 7 | public class MyClass { static MyObject myObject = new MyObject(); public static void main(String args[]) { myObject.doSomething(); } } |
Теперь код будет работать корректно. Но что же делает ключевое слово static
?
Статические переменные и методы принадлежат самому классу, а не его экземплярам. Это значит, что статическая переменная будет иметь одно и то же значение для всех экземпляров класса. Если статическую переменную изменить в одном экземпляре класса, она изменится для всех других экземпляров.
Статические методы, в свою очередь, могут работать только со статическими переменными. Они не могут обращаться к нестатическим переменным или методам.
Таким образом, ключевое слово static
имеет важное значение в Java. Оно позволяет создавать переменные и методы, которые принадлежат самому классу, а не его экземплярам, и которые доступны всем экземплярам этого класса.
Добавить комментарий