WikiDer > Переменная класса
В объектно-ориентированного программирования с классы, а переменная класса есть ли переменная объявлено с статический
модификатор, единственная копия которого существует, независимо от того, сколько экземпляры класса существуют.[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 ++ переменная класса Запрос :: количество
является увеличенный при каждом звонке в конструктор, так что Запрос :: количество
всегда содержит количество созданных запросов, и каждому новому объекту запроса дается количество
в последовательном порядке. поскольку считать
это переменная класса, есть только один объект Запрос :: количество
; напротив, каждый объект запроса содержит свой собственный количество
поле.
Также обратите внимание, что переменная Запрос :: количество
инициализируется только один раз.
Примечания
- ^ "Учебник по Java, переменные". Получено 2010-10-21.
- ^ «Учебное пособие по Java, понимание экземпляров и членов классов». Получено 2010-10-21.
- ^ «Справочник по языку Python, составные утверждения». Получено 2010-10-21.
- ^ "Справочник по среде выполнения Objective-C". Разработчик Apple. Получено 1 апреля 2018.
- ^ а б «Переменные класса в C #». Syntaxdb. Получено 1 апреля 2018.