Модификаторы static и final — важные инструменты Java, используемые для создания констант и управления доступом к членам класса.
Модификатор static
Рассмотрим класс Sum:
public class Sum {
public static int summa(int a, int b) {
return a + b;
}
public int mult(int a, int b) {
return a * b;
}
}
Метод summa содержит модификатор static. Это позволяет обращаться к нему напрямую через имя класса, без создания объекта:
int x = Sum.summa(10, 25); // 35
Обращение к методу mult подобным образом невозможно, так как он не содержит модификатор static:
// int y = Sum.mult(5, 7); // Ошибка компиляции
Для вызова mult необходимо создать объект класса Sum:
Sum a = new Sum();
int y = a.mult(5, 7); // 35
static позволяет использовать методы без создания экземпляра класса.
Статические поля
Модификатор static применим к полям (переменным):
public class Sum {
public static int x = 12;
// ...
}
К статическому полю x можно обратиться напрямую через имя класса:
Sum.x = 24; // Изменяем значение статического поля
Изменение значения статического поля x влияет на все экземпляры класса. Если создать несколько объектов класса Sum, изменение Sum.x отразится на всех:
Sum a = new Sum();
System.out.println(a.x); // 24
Sum b = new Sum();
System.out.println(b.x); // 24
Для переменных, специфичных для каждого объекта, модификатор static не используется. Статические поля и методы принадлежат классу, а не его объектам.
Взаимодействие статических и нестатических методов
Статические методы взаимодействуют только со статическими полями и методами. Попытка использовать нестатический метод внутри статического метода приведёт к ошибке компиляции.
Модификатор final
Модификатор final создаёт константы. Например:
public class Sum {
public static final int X = 10;
}
Значение константы X изменить невозможно. Попытка присвоить ей новое значение вызовет ошибку компиляции.
final применим к полям, методам и классам.
- final для метода: Предотвращает переопределение метода в классах-наследниках.
- final для класса: Запрещает наследование от этого класса.
Модификаторы static и final — важные инструменты в Java, позволяющие создавать статические поля и методы, константы, а также управлять наследованием и переопределением методов. Правильное их использование способствует созданию более структурированного и эффективного кода.