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 Objektum orientált programozás Öröklődés: többszörös öröklődés, konstruktorok, destruktorok, overloading Nagy Szilvia.

Hasonló előadás


Az előadások a következő témára: "1 Objektum orientált programozás Öröklődés: többszörös öröklődés, konstruktorok, destruktorok, overloading Nagy Szilvia."— Előadás másolata:

1 1 Objektum orientált programozás Öröklődés: többszörös öröklődés, konstruktorok, destruktorok, overloading Nagy Szilvia

2 2 Mezőhozzáférés struct : egység van, de alapértelmezésben nincs egységbezárás: minden mező publikus class : egységbezárás van: alapértelmezésben minden mező privát private: csak az osztály elemei érhetik el és az esetleges barátok protected: az osztály és leszármazottainak mezői érik el public: kívülről hozzáférhető

3 3 Mezőhozzáférés öröklése publikus : a mezőhozzáférés változatlanul öröklődik. struct öröklődés esetén ez az alapértelmezés. védett : minden mező védett lesz, kivéve a privát privát : minden mező privátra módosul az öröklődés során, amihez hozzá szeretnénk férni annak módosítani kell a mezőhozzáférését. A class alapértelmezése. Célszerű nem hagyatkozni az alapértelmezésre, hanem explicite megadni az öröklődés módját.

4 4 Öröklött mezőhozzáférés felülbírálata Az örökölt hozzáférési típus elfedhető: a származtatott osztályban: ugyanazzal a névvel a kívánt elérhetéssel deklarálunk egy változót a származtatott osztályban: private/protected/public: eredetiváltozónév; a kívánt elérhetésű változók között felsoroljuk az öröklött változót hatókör operátorral: private/protected/public: alaposztály::változó;

5 5 Virtuális tagfüggvények Virtuális tagfüggvények : olyan öröklött (public v. protected) tagfüggvényei az alaposztálynak, melyeket a származtatott osztályokban újradefiniálunk így az osztály viselkedését megváltoztatjuk: a polimorfizmus egy megtestesülése. Általában az alaposztály referenciáján keresztül hívódik meg, de csak a futáskor rendelődik az aktuális függvény a referenciához: ez a késői kötés v. dinamikus összerendelés

6 6 Virtuális tagfüggvények példa: class alap { … public: virtual int fvnév (); }; tisztán virtuális, ha egyáltalán nem szerepel a virtuális függvény definíciója az alaposztályban: virtual int fvnév ()=0;

7 7 Virtuális tagfüggvények A tagfüggvények virtuális mivolta öröklődik: a leszármazott osztályokban nem szükséges kiírni, hogy virtuális tagfüggvényről van szó. A virtuális tagfüggvények típusa megegyezik az alap-függvény típusával: ugyanolyan neve és ugyanolyan bemeneti és kimeneti paraméterlistája kell, hogy legyen. Ha nem egyezik pontosan túlterhelés ről avagy operator overloading ról beszélünk.

8 8 Túlterhelés operátorfüggvény: legalább egy paraméterük osztály vagy struktúra típusú. Általában osztályokon belül adjuk meg őket vagy friend mechanizmussal. Ugyanahhoz a névhez többféle paraméterlistával is definiálunk függvényt, más és más tartalommal; pl. attól függően, hogy milyen típussal hívjuk meg, más és más lesz a kimeneti típus is.

9 9 Többszörös öröklődés class Alap_i { private: privát változók _i; protected: védett változók _i; public: publikus változók _i; tagfüggvények _i; }; i=1,2,…

10 10 Többszörös öröklődés class Származtatott: public Alap_1, public Alap_2, … { private: privát változók _újak/felülírtak; public: publikus változók _újak/felülírtak; tagfüggvények _újak/felülírtak; };

11 11 Többszörös öröklődés class Származtatott: public Alap_1, public Alap_2, … { private: privát változók _újak/felülírtak; public: publikus változók _újak/felülírtak; tagfüggvények _újak/felülírtak; };

12 12 Konstruktor class osztálynév { private: privát változók ; public: publikus változók ; típus tagfüggvények ; osztálynév(típusok,változók); }; Nincs típusa a konstruktornak és ugyanaz a neve, mint az osztálynak

13 13 Konstruktor class osztálynév { private: privát változók ; public: publikus változók ; típus tagfüggvények ; osztálynév(típusok,változók); }; Hivatkozás: osztálynév::osztálynév()…

14 14 Destruktor Felszabadítja az adattípus álltal elfoglalt területet: class osztálynév { private: privát változók ; public: publikus változók ; típus tagfüggvények ; konstruktor; ~osztálynév(void); };

15 15 Destruktor Felszabadítja az adattípus álltal elfoglalt területet: class osztálynév { private: privát változók ; public: publikus változók ; típus tagfüggvények ; konstruktor; ~osztálynév(void); };

16 16 Mezőhozzáférés struct : egység van, de alapértelmezésben nincs egységbezárás: minden mező publikus class : egységbezárás van: alapértelmezésben minden mező privát private: csak az osztály elemei érhetik el és az esetleges barátok protected: az osztály és leszármazottainak mezői érik el public: kívülről hozzáférhető


Letölteni ppt "1 Objektum orientált programozás Öröklődés: többszörös öröklődés, konstruktorok, destruktorok, overloading Nagy Szilvia."

Hasonló előadás


Google Hirdetések