Osztályváltozó

A Wikipédiából, a szabad enciklopédiából

Az osztályalapú objektumorientált programozásban az osztályváltozó olyan változó, amely egy olyan osztályban van definiálva, amelynek egyetlen példánya létezik, függetlenül attól, hogy az osztály hány példánya létezik.[1][2][3][4][5]

Az osztályváltozó nem példányváltozó. Ez egy speciális típusú osztályattribútum (vagy osztálytulajdonság, mező vagy adattag). Ugyanez a dichotómia a példány és az osztály tagjai között vonatkozik a metódusokra ("tagfüggvényekre") is; egy osztálynak lehetnek példánymetódusai és osztálymetódusai is.

Statikus tagváltozók és statikus tagfüggvények[szerkesztés]

Egyes nyelveken az osztályváltozók és osztálymetódusok vagy statikusan vannak feloldva, nem dinamikus elküldéssel, vagy a memóriájukat statikusan lefoglalják a fordítási időben (egyszer a teljes osztályhoz, statikus változókként ), és nincsenek dinamikusan lefoglalva futási időben (a program minden példányánál egy tárgy). Más esetekben azonban ezek egyike vagy mindkettő dinamikus. Például, ha az osztályok dinamikusan definiálhatók (futási időben), akkor ezen osztályok osztályváltozói dinamikusan kerülnek kiosztásra az osztály definiálásakor, és bizonyos nyelveken az osztálymetódusok is dinamikusan kerülnek kiküldésre.

Így néhány nyelvben a statikus tagváltozót vagy statikus tagfüggvényt az "osztályváltozó" vagy "osztályfüggvény" szinonimájaként vagy helyett használják, de ezek nem szinonimák a nyelveken. Ezeket a kifejezéseket általában a Java, C#[5] és C++ nyelvekben használják, ahol az osztályváltozókat és az osztálymetódusokat a static kulcsszóval deklarálják, és statikus tagváltozóknak vagy statikus tagfüggvényeknek nevezik.

Példa[szerkesztés]

struct Request {

    static int count;
    int number;

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

};

int Request::count = 0;

Ebben a C++ példában a Request::count osztályváltozó a konstruktor minden egyes hívásánál növekszik, így Request::count mindig tartalmazza az elkészített kérések számát, és minden új Request objektum kap egy number egymás után. Mivel count egy osztályváltozó, csak egy objektum létezik Request::count ; ezzel szemben minden Request objektum saját külön number tartalmaz.

Vegye figyelembe azt is, hogy a Request::count változó csak egyszer inicializálódik.

Jegyzetek[szerkesztés]

  1. The Java Tutorial, Variables. (Hozzáférés: 2010. október 21.)
  2. The Java Tutorial, Understanding Instance and Class Members. (Hozzáférés: 2010. október 21.)
  3. The Python Language Reference, Compound Statements. (Hozzáférés: 2010. október 21.)
  4. Objective-C Runtime Reference. Apple Developer. (Hozzáférés: 2018. április 1.)
  5. a b Class Variables in C#. Syntaxdb. (Hozzáférés: 2018. április 1.)

Fordítás[szerkesztés]

Ez a szócikk részben vagy egészben a Class variable című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.