Osztály szint¶ tagok
Osztály szint¶ tagok
Krizsán Zoltán1 [2012. március 12.] Általános Informatikai Tanszék Miskolci Egyetem
Objektumorientált programozás C# alapokon tananyag
Osztály szint¶ tagok
Osztály szint¶ tagok
Tartalom
Osztály szint¶ tagok Bevezetés Osztály változó Osztály metódus Statikus osztály
Osztály szint¶ tagok
Osztály szint¶ tagok Bevezetés
Outline
Osztály szint¶ tagok Bevezetés Osztály változó Osztály metódus Statikus osztály
Osztály szint¶ tagok
Osztály szint¶ tagok Bevezetés
Példány változó
I
Az eddig megismert adattagokból minden objektumnak saját "készlete" van.
I
Ahány objektum annyi benne lev® adattag, melyeknek különböz® értéke lehet.
I
Ezeket ezért szokás példányváltozóknak is nevezni.
I
Az adattagok deklarációja elé kitehet® a static min®sít®.
Osztály szint¶ tagok
Osztály szint¶ tagok Bevezetés
Példány metódus használata
I
Hívásakor ha nem használtuk a this-t az adattagok eléréséhez, akkor is el®tte van.
Osztály szint¶ tagok
Osztály szint¶ tagok Osztály változó
Outline
Osztály szint¶ tagok Bevezetés Osztály változó Osztály metódus Statikus osztály
Osztály szint¶ tagok
Osztály szint¶ tagok Osztály változó
Osztályváltozó
I
A statikus adattag, tulajdonság az osztály valamennyi objektuma számára egy példányban létezik, azok osztottan használják.
I
Miután az osztály mindegyikére vonatkoznak, szokás osztályváltozóknak is hívni. (Globális változó az osztályra nézve.)
I
Nem a this pszeudó változó segítségével történik az elérése.
I
Az objektumok el®tt kell létrejönnie.
Osztály szint¶ tagok
Osztály szint¶ tagok Osztály változó
Osztályváltozó
I
Inicalizálása az osztály inicializálás során történik. I
A keretrendszer akkor inicializál egy osztályt, amikor betölti, azaz el®ször történik rá aktív hivatkozás (példányosítás, metódus hívás vagy változó hozzáférés).
I
Az osztályon belül a nevével hivatkozhatunk.
I
Az osztály bármely metódusa használhatja.
I
Hivatkozás kív¶lr®l: osztálynév.statikus_elemnév (nem hivatkozás.elem) pl.:osztálynev.statikus_adattag = 3.
Osztály szint¶ tagok
Osztály szint¶ tagok Osztály változó
Példa I
Minden objektum számontartja, hogy hányadikként jött létre. A számozást a konstruktor végzi. 1 public class Szamozott 2 { 3 private static int _darab = 0; 4 private int _sorszam; 5 public Szamozott() 6 { 7 _sorszam = ++_darab; 8 } 9 }
Osztály szint¶ tagok
Osztály szint¶ tagok Osztály változó
Konstans (const)
I
Technikailag adatszer¶ elem.
I
Nem lehet változtatni értékét.
I
Úgy viselkedik, mint a statikus elem.
I
Nem lehet statikus min®sít®vel ellátni.
I
Kívülr®l elérése az osztály nevével lehetséges.
Osztály szint¶ tagok
Osztály szint¶ tagok Osztály metódus
Outline
Osztály szint¶ tagok Bevezetés Osztály változó Osztály metódus Statikus osztály
Osztály szint¶ tagok
Osztály szint¶ tagok Osztály metódus
Osztály metódus I
Bár az eddigi metódusok csak egy példányban léteznek minden példány számára, de m¶ködésükhöz egy aktuális példány szükséges.
I
Ezeket hívhattuk volna példánymetódusoknak is.
I
Metódus is kaphat static min®sítést: osztálymetódus.
I
Az ilyen metódus a példányváltozókhoz és a this pszedóváltozóhoz nem férhet hozzá.
I
Következmény: csak osztályváltozókat, osztály tulajdonságokat és más osztálymetódusokat használhat.
Osztály szint¶ tagok
Osztály szint¶ tagok Osztály metódus
Osztály metódus II
I
Akkor is végrehajtható, ha az osztálynak nem léteznek példányai.
I
Hivatkozás:
I
I
osztályon belül a nevével
I
kív¶lr®l az osztály neve.osztalyMetodus.
Egy program indulásakor nincs, ami példányt hozzon létre, ezért a main metódusnak static min®sítés¶nek kell lennie.
Osztály szint¶ tagok
Osztály szint¶ tagok Osztály metódus
Példa
I I
I
Az el®z® Szamozott osztály egy metódusa lehet:
1 public static int hanyanVagyunk() { 2 return _darab; 3 } Ez a metódus a Szamozott.hanyanVagyunk() formában hívható meg.
Osztály szint¶ tagok
Osztály szint¶ tagok Statikus osztály
Outline
Osztály szint¶ tagok Bevezetés Osztály változó Osztály metódus Statikus osztály
Osztály szint¶ tagok
Osztály szint¶ tagok Statikus osztály
Statikus osztály
I
Csak statikus elemei lehetnek. Ha van példány tagja, akkor fordítási hiba.
I
Nem lehet példányosítani.
I
Pecsételt (Sealed), nem lehet származtatni.
I
Nem lehet példány konstruktora.
Osztály szint¶ tagok
Osztály szint¶ tagok Statikus osztály
Példa I
1 static class CompanyInfo 2 { 3 public static string GetCompanyName() 4 { 5 return "CompanyName"; 6 } 7 public static string GetCompanyAddress() 8 { 9 return "CompanyAddress"; 10 } 11 }
Osztály szint¶ tagok