Jump to content

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

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

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

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

[ редактировать ]

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

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

struct Request {

    static int count;
    int number;

    Requestobject() {
        number = count; // modifies the instance variable "this->number"
        ++count; // modifies the class variable "Request::count"
    }

};

int Request::count = 0;

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

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

class Dog:
    vertebrate_group = 'mammals' # class variable

dog_1 = Dog
print(dog_1.vertebrate_group) # accessing the class variable

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

Примечания

[ редактировать ]
  1. ^ «Учебник по Java, переменные» . Проверено 21 октября 2010 г.
  2. ^ «Учебное пособие по Java: понимание членов экземпляра и класса» . Проверено 21 октября 2010 г.
  3. ^ «Справочник по языку Python, составные операторы» . Проверено 21 октября 2010 г.
  4. ^ «Справочник по времени выполнения Objective-C» . Разработчик Apple . Проверено 1 апреля 2018 г.
  5. ^ Jump up to: а б «Переменные класса в C#» . Синтаксическая база данных . Проверено 1 апреля 2018 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 48f005fee191b05d5d2d0b3b9b93d706__1706824260
URL1:https://arc.ask3.ru/arc/aa/48/06/48f005fee191b05d5d2d0b3b9b93d706.html
Заголовок, (Title) документа по адресу, URL1:
Class variable - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)