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::number
eine Kopie der Klassenvariablen, Request::count1
wobei jeder erstellten Instanz ein sequenzieller Wert von zugewiesen wird, count1
bevor sie inkrementiert wird . Da number
es sich um eine Instanzvariable handelt, Request
enthält jedes Objekt seinen eigenen eindeutigen Wert; im Gegensatz dazu Request::count1
steht allen Instanzen mit demselben Wert nur ein Objekt zur Verfügung.