stringtranslate.com

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

В объектно - ориентированном программировании на основе классов переменная класса — это переменная , определенная в классе , единственная копия которой существует независимо от того, сколько экземпляров класса существует. [1] [2] [3] [4] [5]

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

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

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

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

Пример

С++

структура Запрос {   статический счетчик целых чисел ;   целое число ;  Объект запроса () {  число = количество ; // изменяет переменную экземпляра "this->number"    ++ количество ; // изменяет переменную класса "Request::count"  }};int Request :: count = 0 ;   

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

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

Питон

class  Dog :  позвоночные_группа  =  'млекопитающие'  # переменная классаDog_1  =  Dog print ( dog_1.позвоночная_группа ) # доступ к переменной класса 

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

Примечания

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