Ответ
Статические поля (поля класса) — это переменные, объявленные с модификатором static. Они принадлежат самому классу, а не отдельным его экземплярам (объектам). В памяти существует только одна копия статического поля, которая инициализируется при загрузке класса.
Ключевые особенности:
- Общая память: Все экземпляры класса разделяют одно статическое поле.
- Доступ: К полю можно обращаться как через имя класса (
ClassName.fieldName), так и через ссылку на объект (но это не рекомендуется для ясности кода). - Время жизни: Поле существует с момента загрузки класса и до завершения работы программы.
- Инициализация: Часто инициализируются при объявлении или в статическом блоке инициализации.
Типичные случаи использования:
- Константы класса (
public static final). - Счётчики количества созданных экземпляров.
- Кэши, общие конфигурации или разделяемые ресурсы (требует осторожности в многопоточности).
Пример на Java:
public class AppConfig {
// Статическое поле-константа
public static final String APP_NAME = "MyApp";
// Статическое поле-счётчик
private static int instanceCount = 0;
public AppConfig() {
instanceCount++; // Увеличиваем счётчик при создании каждого объекта
}
public static int getInstanceCount() {
// Статический метод для доступа к статическому полю
return instanceCount;
}
}
public class Main {
public static void main(String[] args) {
// Доступ к константе через имя класса
System.out.println(AppConfig.APP_NAME); // MyApp
new AppConfig();
new AppConfig();
// Доступ к счётчику через статический метод
System.out.println(AppConfig.getInstanceCount()); // 2
}
}