-
Notifications
You must be signed in to change notification settings - Fork 4
Static
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 позволяет импортировать один или все статические члены класса.