Skip to content
ArtemMe edited this page Nov 19, 2018 · 1 revision

Для инициализации статических полей можно пользоваться статическими методами и нельзя обращаться к динамическим. Вводят специальные понятия – статический и динамический контексты. К статическому контексту относят статические методы, статические инициализаторы, инициализаторы статических полей. Все остальные части кода имеют динамический контекст.

Особенности static :

  • Нельзя получить доступ к нестатическим поля из статического контекста
  • Статические поля и методы НЕ потокобезопасны (Thread-safe) в Java
  • Как нельзя лучше подходят в качестве методов-фабрик (factory), и методов-утилит (utility). Класс java.lang.Math — замечательный пример, в котором почти все методы статичны, по этой же причине классы-утилиты в Java финализированы (final).
  • Вы НЕ можете переопределять (Override) статические методы. Если вы объявите такой же метод в классе-наследнике (subclass), т.е. метод с таким же именем и сигнатурой, вы лишь «спрячете» метод суперкласса (superclass) вместо переопределения. во время компиляции всегда будет вызван метод исходя из типа переменной.
  • Объявить статическим также можно и класс, за исключением классов верхнего уровня.
  • Статические поля или переменные инициализируются после загрузки класса в память. Порядок инициализации сверху вниз, в том же порядке, в каком они описаны в исходном файле Java класса.
  • статические поля не сериализуются
  • static import позволяет импортировать один или все статические члены класса.

Clone this wiki locally