Kezdőoldal » Számítástechnika » Programozás » Egy forráskódban mikor valósul...

Egy forráskódban mikor valósul meg a többalakúság? Egyáltalán mi az a többalakúság?

Figyelt kérdés

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?


2012. okt. 12. 00:29
 1/7 A kérdező kommentje:

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.

2012. okt. 12. 00:34
 2/7 anonim ***** válasza:

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.

2012. okt. 12. 00:39
Hasznos számodra ez a válasz?
 3/7 A kérdező kommentje:

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?

2012. okt. 12. 01:10
 4/7 A kérdező kommentje:
Előző szerintem te összekevered a többalakúságot az öröklődéssel.
2012. okt. 12. 01:52
 5/7 A kérdező kommentje:

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::

2012. okt. 12. 02:04
 6/7 A kérdező kommentje:
00:39 válaszoló te pedig az öröklődésről beszélsz nem pedig a többalakúságról.
2012. okt. 12. 02:05
 7/7 anonim ***** válasza:

Akkor értelmezd újra a leírtakat, csak megpróbáltam leegyszerűsíteni.


De itt van még leírás hozzá: [link]

2012. okt. 12. 21:58
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!