Статическим называется метод, который существует в классе как в таковом, а не в отдельных его экземплярах. Как и в случае других статических членов, главное преимущество статических методов в том, что они расположены вне конкретных экземпляров класса, не засоряя глобальное пространство приложения. При этом они и не нарушают принципов ООП, поскольку ассоциированы с определенным классом. Примером может служить API баз данных, написанный мной на С#. В моей иерархии классов есть класс
SQLServerDb.
Помимо базовых операций для работы с БД (new, update, read и delete), класс содержит метод, предназкаченный для восстановления БД. В методе
Repair
не нужно открывать саму БД. Я использую функцию ODBC
(SQLConfigDataSource),
которая предполагает, что БД закрыта. Однако, конструктор
SQLServerDb
открыл БД, указанную переданным ему именем. Поэтому здесь очень удобно использовать статический метод. Это позволило мне поместить метод в класс
SQLServerDb,
к которому он принадлежит, и даже не обращаться к конструктору моего класса. Очевидно, выгода клиента в том, что он также не должен создавать экземпляр класса
SQLServerDb.
В следующем примере вы можете видеть вызов статического метода
(RepairDatabast)
из метода
Main.
Заметьте, что для этого не создается экземпляр
SQLServerDB: