Ваше описание статической переменной больше соответствует тому, что можно найти в C. Концепция статической переменной в объектно-ориентированных терминах концептуально отличается. Я опираюсь на опыт Java здесь. Статические методы и поля полезны, когда они концептуально не принадлежат экземпляру чего-либо.
Рассмотрим класс Math, который содержит некоторые общие значения, такие как Pi или e, и некоторые полезные функции, такие как sin и cos. На самом деле не имеет смысла создавать отдельные экземпляры для использования этого вида функциональности, поэтому они лучше, чем статические:
// This makes little sense
Math m = new Math();
float answer = m.sin(45);
// This would make more sense
float answer = Math.sin(45);
В ОО-языках (опять же, с точки зрения Java) функции или более известные как методы не могут иметь статические локальные переменные. Только классы могут иметь статические члены, которые, как я уже сказал, мало похожи на идею статического в C.