Назад Вперед Содержание

Статические элементы

Объектно-ориентированный стиль программирования кратко можно описать таким образом:

  1. Сначала создайте классы – полезные правила для создания объектов.
  2. Далее создавайте объекты – экземпляры этих классов и заставляйте их выполнять нужную Вам работу.

Таким образом, в процессе выполнения программы непосредственно действуют объекты. Однако в некоторых случаях естественнее считать, что действия выполняются самим классом. Хорошим примером является класс Math – все его методы вызываются от имени класса:
Console.WriteLine(Math.Sin(0.5)+Math.Cos(0.5)); 

Было бы довольно странно для вычисления математических функций сначала создавать объект-«математику»:
Math m1=new Math(); Math m2=new Math();
Console.WriteLine(m1.Sin(0.5)+m2.Cos(0.5))

Это означало бы, что можно создавать несколько «математик». Но ведь они все должны действовать абсолютно одинаково.

Аналогично дело обстоит и с переменными – бывают случаи, когда некоторые данные естественнее представлять не как порцию информации, принадлежащую объекту, а классу в целом.

В классе Math эта ситуация встречается при доступе к тригонометрической константе - Math.PI.

Элементы класса (переменные и методы), которые соотносятся не с объектами, а с классом, называются статическими. В описании статических элементов используется ключевое слово static.

Статические переменные описываются и хранятся в классе в единственном числе.

В отличие от статических членов обычные элементы класса называются элементами экземпляров класса – методы экземпляров и переменные экземпляров. Переменные экземпляра описываются в классе и хранятся в объектах класса.

Пример

Класс Person моделирует ситуацию, когда множество людей располагают некоторым общим запасом пищи и делят его поровну.

Количество пищи FoodQuantity и количество людей PeopleCount – характеристики всей совокупности людей. Поэтому они описаны как статические переменные.

Метод Description описывает состояние всего множества людей и также является статическим методом.

Статические методы могут использовать только статические переменные и другие статические методы класса. Попытка использовать в методе Description переменную Weight привела бы к ошибке компилятора.

В классе Program:

Результат:

Назад Вперед Содержание