Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.

Hasonló előadás


Az előadások a következő témára: "1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz."— Előadás másolata:

1 1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz

2 2 Egy példányszintű metódus belsejében a példány mezőinek elérése automatikus, egyszerűen a mező nevének beírásával történik. class TVadAllat { private int Eletkor = 0; public void Oregszik() { Eletkor++;... } class TVadAllat { private int Eletkor = 0; public void Oregszik() { Eletkor++;... }

3 3 Időnként szükséges, hogy a példányszintű metódus belsejében szükség van magára az aktuális példányra hivatkozni. Ezt a ‘this’ foglalt szóval tehetjük meg: class TVadAllat { public void Megeszik(TNovenyevo aldozat) {... } class TVadAllat { public void Megeszik(TNovenyevo aldozat) {... } class TNovenyevo { public void Megtamad(TVadallat gyilkos) { if (tulFaradt) gyilkos.Megeszik( this );... } class TNovenyevo { public void Megtamad(TVadallat gyilkos) { if (tulFaradt) gyilkos.Megeszik( this );... }

4 4 Valójában a ‘this’ egy láthatatlan plusz paraméter, amelyet a fordítóprogram automatikusan kezel: TNovenyevo v = new TNovenyevo(); v.Megtamad( tigris ); TNovenyevo v = new TNovenyevo(); v.Megtamad( tigris ); public void Megtamad(TVadallat gyilkos) {...} public void Megtamad(TVadallat gyilkos, TNovenyevo this) TNovenyevo v = new TNovenyevo(); TNovenyevo :: Megtamad( tigris,v ); TNovenyevo v = new TNovenyevo(); TNovenyevo :: Megtamad( tigris,v ); Ezek a példák csak a megértést segítik. Ezt így ne lehet használni C#-ban…

5 5 A this szót azonban más formában is hasznosíthatjuk: public void Oregszik(int evekSzama) { this.Eletkor += evekSzama; } public void Oregszik(int evekSzama) { this.Eletkor += evekSzama; } class TSajat { private int x=0; public void Eltol(int x) { this.x += x; } class TSajat { private int x=0; public void Eltol(int x) { this.x += x; }

6 6 A this szót főleg constructor-ban használhatjuk így: class TSajat { private int x=0; public TSajat(int x) { this.x += x; } class TSajat { private int x=0; public TSajat(int x) { this.x += x; } A this ezen használata hangsúlyozza, hogy az azonosító példánymező. Ez ‘kötelező’, ha félreérthető a helyzet, mint a fenti kódban is. Itt a ‘this’ nélküli értékadás értelmetlen, mert a ‘this’ nélküli ‘x’ a paraméterváltozót jelenti!

7 7 A this szócskát osztály szintű metódusban (static) nem használható fel, mert a ‘this’ a példányt azonosítja, de az osztályszintű metódus hívásához nem kell (és nincs is) példány! A ‘this’ foglalt szó, másra felhasználni nem lehet!


Letölteni ppt "1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz."

Hasonló előadás


Google Hirdetések