WikiDer > Переменная класса

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.