Instanzvariable - Instance variable

Bei der objektorientierten Programmierung mit Klassen ist eine Instanzvariable eine in einer Klasse definierte Variable (dh eine Membervariable ), für die jedes instanziierte Objekt der Klasse eine separate Kopie oder Instanz hat. Eine Instanzvariable weist Ähnlichkeiten mit einer Klassenvariablen auf , ist jedoch nicht statisch. Eine Instanzvariable ist eine Variable, die in einer Klasse deklariert wird, jedoch außerhalb von Konstruktoren, Methoden oder Blöcken. Instanzvariablen werden erstellt, wenn ein Objekt instanziiert wird und sind für alle Konstruktoren, Methoden oder Blöcke in der Klasse zugänglich. Der Instanzvariablen können Zugriffsmodifikatoren zugewiesen werden.

Eine Instanzvariable ist keine Klassenvariable, obwohl es Ähnlichkeiten gibt. Es ist eine Art von Klassenattribut (oder Klasseneigenschaft, Feld oder Datenelement). Dieselbe Dichotomie zwischen Instanz- und Klassenmembern gilt auch für Methoden ("Memberfunktionen"); eine Klasse kann sowohl Instanzmethoden als auch Klassenmethoden haben .

Jede Instanzvariable bleibt für die Lebensdauer des Objekts, dem sie gehört, im Speicher.

Variablen sind Eigenschaften, die ein Objekt über sich selbst kennt. Alle Instanzen eines Objekts haben ihre eigenen Kopien von Instanzvariablen, auch wenn der Wert von einem Objekt zum anderen gleich ist. Eine Objektinstanz kann die Werte ihrer Instanzvariablen ändern, ohne dass sich dies auf alle anderen Instanzen auswirkt. Instanzvariablen können von allen Methoden einer Klasse verwendet werden, es sei denn, die Methode ist als statisch deklariert.

Beispiel

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;

In diesem C++-Beispiel ist die Instanzvariable Request::numbereine Kopie der Klassenvariablen, Request::count1wobei jeder erstellten Instanz ein sequenzieller Wert von zugewiesen wird, count1bevor sie inkrementiert wird . Da numberes sich um eine Instanzvariable handelt, Requestenthält jedes Objekt seinen eigenen eindeutigen Wert; im Gegensatz dazu Request::count1steht allen Instanzen mit demselben Wert nur ein Objekt zur Verfügung.

Verweise