Egy forráskódban mikor valósul meg a többalakúság? Egyáltalán mi az a többalakúság?
A 24 órás könyvből nem értettem meg.
Amúgy ahol van virtuális függvény ott akkor ezzel a többalakúságot valósítjuk meg?
Vagy,hogy van ez?
A többalakúság lehetővé teszi, hogy úgy bánjunk egy származtatott osztállyal, mintha az a bázisosztály objektuma lenne.
Nem értem.
Olyan hülyén van megfogalmazva.
Ez a mondat azt mondja ki konyha nyelven, hogy ahol a bázisosztályt használhatod, ott helyettesítheted a származtatottal is.
Tehát ha mondjuk a vissza térési értéknek a gyümölcsöt várod, akkor visszaadhatsz egy gyümölcsből származtatott alma osztályú objektumot is akár.
(Vagyis a származtatottat is "elfogadja" a program amikor a bázist várná.)
De ez logikus is, hiszen a származtatás által az új osztály örökli a szülő metódusait is, így ugyan úgy hívhatóak benne, mintha csak a szülőben lennének.
Tehát akkor a többalakúság lehetővé teszi azt,hogy én a bázisosztály egy objektumát úgy kezeljem mintha az a származtatott osztály objektuma is lenne.
X *obj1 = new Y ;
Itt az obj1 egy mutató ami egy X típusú objektum címét várja.
De egy Y típusú objektumét kapja.Ugye ez azért jó így mert az Y származtatva van az X ből ezért valójában az Y az X is.
Ez jól mondtam?
Gyakorlatilag mi történik itt.
X *obj1 = new Y ;
Mert amúgy tényleg nem rendelhetünk X objektumot váró mutatóhoz Y típusú objektumot.Itt konvertálódik a háttérben az obj1 Y-ná?Vagy hogy van ez gyakorlatilag?
Ez az egész többalakúság csak úgy működik,hogy ha virtuális függvényeket használok.
const X *const x(new Y) ;
x-> //Ilyenkor a fejlesztői eszközöm ki listázza a X metódusait,adattagjait persze csak ha publikus.De az Y metódusait már nem listázza ki.
Mi értelme van a többalakúságnak,ha nem listázza ki az Y adattagjait?Y adattagjait nem lehet elérni csak a virtuális táblázat segítségével, akkor mi értelme van ennek az egésznek?
Ha például Y osztálynak lenne egy metódusa ami nem szerepel a bázisosztályban akkor azt nem lehet elérni sehogy,csak így:
x->Y::
Akkor értelmezd újra a leírtakat, csak megpróbáltam leegyszerűsíteni.
De itt van még leírás hozzá: [link]
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!