Ответ
Статический метод — это метод, принадлежащий классу, а не конкретному экземпляру. Он вызывается через имя класса: ClassName.methodName().
Особенности и правила:
- Нет доступа к
this. Статический метод не может напрямую обращаться к нестатическим полям и методам класса, так как выполняется без контекста объекта. - Может обращаться только к статическим членам класса (другим статическим методам и полям).
- Не может быть переопределен (overridden), но может быть скрыт (hidden) в подклассе.
- Используется для утилитных функций, фабричных методов или методов, не зависящих от состояния объекта.
Примеры использования:
public class MathUtils {
// Утилитный метод
public static int max(int a, int b) {
return a > b ? a : b;
}
// Фабричный метод
public static LocalDate createDateFromString(String dateStr) {
return LocalDate.parse(dateStr);
}
}
// Вызов
int maximum = MathUtils.max(10, 20);
LocalDate date = MathUtils.createDateFromString("2023-12-01");
Почему main метод статический? JVM должна иметь возможность запустить программу, не создавая экземпляр какого-либо класса. Статический метод main предоставляет точку входа.
Важно: Злоупотребление статическими методами нарушает принципы ООП, так как они не работают с состоянием объекта и усложняют тестирование (их сложнее замокать).