Ответ
Ключевое слово static в Java обозначает, что член класса (поле, метод, блок, вложенный класс) принадлежит самому классу, а не его экземплярам (объектам). Он загружается в память при инициализации класса.
Основные применения:
-
Статические поля (переменные класса):
- Общая память для всех объектов класса.
class Counter { static int instanceCount = 0; // Счетчик всех созданных объектов Counter() { instanceCount++; } }
- Общая память для всех объектов класса.
-
Статические методы:
- Вызываются через имя класса (
ClassName.method()). - Могут обращаться только к статическим членам. Не могут использовать
this.class MathUtils { static double pow(double base, int exponent) { /* ... */ } } // Вызов: MathUtils.pow(2, 3);
- Вызываются через имя класса (
-
Статический блок инициализации:
- Выполняется один раз при загрузке класса.
class Config { static Properties props; static { props = new Properties(); // Загрузка конфигурации из файла } }
- Выполняется один раз при загрузке класса.
-
Статические вложенные классы:
- Не имеют доступа к нестатическим членам внешнего класса.
Важное ограничение: Статические методы не могут быть переопределены (они скрываются, но не полиморфны).