Az osztályalapú objektumorientált programozásban egy példányváltozó egy osztályban definiált változó (azaz egy tagváltozó), amelyre az osztály minden példányosított objektumának van egy külön másolata vagy példánya. Egy példányváltozó hasonlóságot mutat egy osztályváltozóval, de nem statikus. A példányváltozó egy olyan változó, amely egy osztályban van deklarálva, de konstruktorokon, metódusokon vagy blokkon kívül. A példányváltozók akkor jönnek létre, amikor egy objektumot példányosítanak, és az osztály összes konstruktora, metódusa vagy blokkja számára elérhetők. Hozzáférési módosítók adhatók a példányváltozóhoz.

A példányváltozó nem osztályváltozó, bár vannak hasonlóságok. Ez egy osztályattribútum (vagy osztálytulajdonság, mező vagy adattag) típusa. Ugyanez a kettősség a példány és az osztály tagjai között vonatkozó metódusokra ("tagfüggvényekre") is; egy osztálynak lehetnek példánymetódusai és osztálymetódusai is.

A változók olyan tulajdonságok, amelyeket az objektum ismer magáról. Egy objektum minden példányának megvannak a saját példányváltozói, még akkor is, ha az egyik objektum értéke ugyanaz. Egy objektumpéldány módosíthatja példányváltozóinak értékeit anélkül, hogy az összes többi példányt érintené. A példányváltozókat egy osztály összes metódusa használhatja, kivéve, ha a metódus statikusnak van deklarálva.

Példa 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; Ebben a C++ példában a Request::number példányváltozó a Request::count1 osztályváltozó másolata, ahol minden felépített példányhoz hozzárendelnek egy count1 szekvenciális értéket, mielőtt megnövelnénk. Mivel a number egy példányváltozó, minden Request objektum saját külön értéket tartalmaz; ezzel szemben csak egy objektum Request::count1 érhető el minden példány számára aminek értéke azonos.

Jegyzetek

Fordítás

Kategória:Objektumorientált programozás