Насколько я понимаю, static-методы класса позволяют использовать себя без создания экземпляра этого класа. Т.е. фактически мы можем использовать эти методы как обычные "функции".
Что-то вроде:
MyClass::stati_method()
Но часто вижу, что используется private static методы. Зачем делать их приватными, ведь тогда вышеуказанный пример работать не будет. Помогите понять этот ньюанс
Антон Середний, чтобы он не привязывался к конкретному объекту. Это просто как обычная функция внутри класса, например, для генерации токена или ещё что-то делающая
Антон Середний, то бишь этот метод не работает с конкретным объектом, просто выполняет какие-то нужные действия и всё. Но вы не хотите, чтобы другие классы могли использовать его.
Павел Корнилов, ну, тут еще дело "эстетичности код". Если я пишу статичный метод, я явно указываю на то, что данный метод не будет зависеть от экземпляра класса. Также еще возможно в целях производительности.
например, есть у тебя какой-нибудь сложный метод фабрики, строк так на 300, разделенный на 3 логичных фрагмента.
вот ты его оборачиваешь в public static, 3 фрагмента делаешь как private static и выдаешь результат.
Вы можете обращаться к приватным статическим методам из публичных статических методов.
С не статическими приватными методами это было бы не возможно, т.к. отсутствует экземпляр класса