Переменная класса - Class variable

В объектно-ориентированного программирования с классы, а переменная класса есть ли переменная объявлено с статический модификатор, единственная копия которого существует, независимо от того, сколько экземпляры класса существуют.[1][2][3][4][5] Обратите внимание, что в Java термины «поле» и «переменная» взаимозаменяемы для переменная-член.

Переменная класса не является переменная экземпляра. Это особый вид атрибут класса (или свойство класса, поле или член данных). Та же дихотомия между пример и класс члены обращается к методы («функции-члены»); в классе могут быть оба методы экземпляра и методы класса.

Статические переменные-члены и статические функции-члены

В некоторых языках переменные класса и методы класса разрешаются статически, а не через динамическая отправка, или их память статически распределенный во время компиляции (один раз для всего класса, как статические переменные ), которые не выделяются динамически во время выполнения (при каждом создании объекта). В других случаях, однако, один или оба из них являются динамическими. Например, если классы могут быть определены динамически (во время выполнения), переменные класса этих классов выделяются динамически, когда класс определен, а в некоторых языках методы класса также отправляются динамически.

Таким образом, на некоторых языках статическая переменная-член или статическая функция-член используются как синонимы с «переменной класса» или «функцией класса» или вместо них, но они не являются синонимами в разных языках. Эти термины обычно используются в Ява, C # [5] , и C ++, где переменные класса и методы класса объявлены с статический ключевое слово, и называемый статические переменные-члены или статические функции-члены.

пример

 1 структура Запрос { 2  3     статический int считать; 4     int количество; 5  6     Запрос() { 7         количество = считать; // изменяет переменную экземпляра this-> number 8         ++считать; // изменяет переменную класса Request :: count 9     }10 11 };12 13 int Запрос::считать = 0;

В этом примере C ++ переменная класса Запрос :: количество является увеличенный при каждом звонке в конструктор, так что Запрос :: количество всегда содержит количество созданных запросов, и каждому новому объекту запроса дается количество в последовательном порядке. поскольку считать это переменная класса, есть только один объект Запрос :: количество; напротив, каждый объект запроса содержит свой собственный количество поле.

Также обратите внимание, что переменная Запрос :: количество инициализируется только один раз.

Примечания

  1. ^ "Учебник по Java, переменные". Получено 2010-10-21.
  2. ^ «Учебное пособие по Java, понимание экземпляров и членов классов». Получено 2010-10-21.
  3. ^ «Справочник по языку Python, составные утверждения». Получено 2010-10-21.
  4. ^ "Справочник по среде выполнения Objective-C". Разработчик Apple. Получено 1 апреля 2018.
  5. ^ а б «Переменные класса в C #». Syntaxdb. Получено 1 апреля 2018.