Jump to content

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

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

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

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

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

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

struct Request {

    static int count1; // variable name is not important
    int number;

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

};

int Request::count1 = 0;

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

//Example.java

class Example {
    public int x = 0;
    
    public void setX(int newValue) {
        this.x = newValue;
    }
}

//Main.java

class Main {
    public static void main(String[] args) {
        Example example1 = new Example();
        Example example2 = new Example();
        
        //We can set the value of x by itself, as the variable is public
        example1.x = 10;
        
        assert example1.x == 10;
        assert example2.x ==  0;
        
        //As setX is an instance method, it can also access the variable
        example2.setX(-10);
        
        assert example1.x ==  10;
        assert example2.x == -10;
    }
}

В этом примере Java мы можем увидеть, как переменные экземпляра могут быть изменены в одном экземпляре, не затрагивая другой.

class Dog:
    def __init__(self, breed):
        self.breed = breed # instance variable

# dog_1 is an object
# which is also an instance of the Dog class
dog_1 = Dog("Border Collie")

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

  1. ^ «Переменные экземпляра в программировании на C++» . Дремендо . Проверено 8 марта 2024 г.
  2. ^ «Переменные Java» . Гики для Гиков . 06 февраля 2017 г. Проверено 8 марта 2024 г.
  3. ^ «Учебник по Java, переменные» . docs.oracle.com . Оракул. Архивировано из оригинала 23 октября 2014 года . Проверено 23 октября 2014 г.
  4. ^ «Разница между переменной экземпляра и переменной класса» . Гики для Гиков . 26 апреля 2021 г. Проверено 8 марта 2024 г.
  5. ^ «Учебные пособия по Java, понимание членов класса» . docs.oracle.com . Оракул. Архивировано из оригинала 11 октября 2014 года . Проверено 23 октября 2014 г.
  6. ^ Матушек, Дэвид. «Статика» . cis.upenn.edu . Пенсильванский университет. Архивировано из оригинала 23 октября 2014 года . Проверено 23 октября 2014 г.


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: dee4b1fdbea1141919355d4d5c5392f3__1719892800
URL1:https://arc.ask3.ru/arc/aa/de/f3/dee4b1fdbea1141919355d4d5c5392f3.html
Заголовок, (Title) документа по адресу, URL1:
Instance variable - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)