Закрытый статический член класса

Рейтинг: 2Ответов: 3Опубликовано: 03.04.2015

Здравствуйте, народ! Собственно ищу ответ на вопрос, который однажды поставил меня в тупик и на который пока не нашел обьективного ответа, а именнно в каких ситуациях может понадобится наличие закрытого статического метода класса?

Ответы

▲ 6Принят

Вот несколько идей навскидку:

  1. Логгер, собирающий сообщения только от экземпляров конкретного класса
  2. Просто вспомогательный метод, который вызывается из другого статического метода класса
  3. Счётчик созданных экземпляров класса
  4. Семафор или мьютекс, синхронизирующий доступ к методам класса (сомнительно с архитектурной точки зрения, но всё же применимо)

Последние два пункта сокрее относятся к скрытым статическим полям, а не методам, но их можно реализовать и так. Вообще, все пункты, кроме второго, сомнительны, но это всё, что я смог придумать.

▲ 3

Да, снаружи этот метод нельзя будет использовать. Но сам класс сможет вызывать этот метод.

Обычно статики используют для каких-то вспомогательных алгоритмов, которым не требуется доступ к данным объекта.

Но здесь есть один резон. В статический метод не передавается this, и теоретически это может быть немного быстрее, чем обычный приватный метод.

▲ 1

Статические методы могут использовать только статические члены класса. К закрытому статическому методу не будет доступа из внешнего мира. Напоминатель программисту о том что он не сможет добраться к обыкновенным членам класса Через этот метод который он может использовать только в закрытой области. Другими словами, этот метод используешь только для статических членов класса в закрытой области. Пример использования : Обыкновенный счётчик который должен существовать на протяжении всей работы программы изменять данные которого можно только с помощью такого метода если члены класса в закрытой статической области. Соответственно этим методом могут пользоваться только сам класс и его друзья.