stringtranslate.com

Переменная экземпляра

В объектно - ориентированном программировании на основе классов переменная экземпляра — это переменная, определенная в классе (т. е. переменная-член ), для которой каждый экземпляр объекта класса имеет отдельную копию или экземпляр . Переменная экземпляра имеет сходство с переменной класса [1] , но не является статической . Переменная экземпляра — это переменная, которая объявлена ​​в классе, но вне конструкторов , методов или блоков . Переменные экземпляра создаются при создании экземпляра объекта и доступны всем конструкторам, методам или блокам в классе. Модификаторы доступа могут быть переданы переменной экземпляра.

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

Каждая переменная экземпляра живет в памяти в течение всего времени существования объекта, которому она принадлежит. [2]

Переменные — это свойства, которые объект знает о себе. Все экземпляры объекта имеют свои собственные копии переменных экземпляра, даже если значения от одного объекта к другому одинаковы. Один экземпляр объекта может изменять значения переменных своего экземпляра, не затрагивая все остальные экземпляры. Переменные экземпляра могут использоваться всеми методами класса, если метод не объявлен как статический. [3]

Пример

С++

структура Запрос {   статический int count1 ; // имя переменной не важно int Number ;      Запрос (); { число = счетчик1 ; // изменяет переменную экземпляра "this->number" ++ count1 ; // изменяет переменную класса "Request::count1" }        };int Request :: count1 = 0 ;   

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

Питон

класс  Dog :  def  __init__ ( self ,  Breed ):  self . породы  =  порода  # переменная экземпляра# собака_1 — это объект , # который также является экземпляром класса Dog Dog_1  =  Dog ( «Бордер-колли» )

В приведенном выше коде Python переменная экземпляра создается при анализе аргумента в экземпляре со спецификацией позиционного аргумента породы.

Рекомендации

  1. ^ «Учебник по Java, Переменные» . docs.oracle.com . Оракул. Архивировано из оригинала 23 октября 2014 года . Проверено 23 октября 2014 г.
  2. ^ «Учебные пособия по Java, понимание членов класса» . docs.oracle.com . Оракул. Архивировано из оригинала 11 октября 2014 года . Проверено 23 октября 2014 г.
  3. ^ Матушек, Дэвид. «Статика». cis.upenn.edu . Пенсильванский университет. Архивировано из оригинала 23 октября 2014 года . Проверено 23 октября 2014 г.