Kezdőoldal » Számítástechnika » Programozás » Mi értelme van a többalakúságn...

Mi értelme van a többalakúságnak ha ezzel nem leszek képes elérni a származtatott osztály olyan metódusait amelyek nincsenek a bázisosztályban?

Figyelt kérdés

Egyszóval a bázisosztályban nem virtuálisként és a származtatott osztályban nem felülírt függvényeket nem fogja látni az objektumom.


Így aztán majd mindig konvertálnom kell az objektumomat származtatott típusra ha akarom használni annak metódusait.

Mi értelme van ennek?


2012. okt. 12. 04:11
 1/6 A kérdező kommentje:

Értitek mit nem értek ugye?

Mi értelme van ennek ha mindig konvertálnom fog kelleni a típust ha származtatott osztály metódusait használhassam?

X *x(new Y) ;


Ez tökéletes megoldásnak tűnik:

X *x(new X) ; //Ugye így mennyivel jobb?


De mi értelme van ennek:

X *x(new Y) ; //biztos nem véletlenül találták ki.

2012. okt. 12. 04:15
 2/6 A kérdező kommentje:

Helyesbítek:

"Ez tökéletes megoldásnak tűnik:

X *x(new X) ; //Ugye így mennyivel jobb? " helyett így akartam:

Ez tökéletes megoldásnak tűnik:

Y *Y(new Y) ; //Ugye így mennyivel jobb?

2012. okt. 12. 04:17
 3/6 iostream ***** válasza:
Ha folyton el kell érned a származtatott osztály dolgait, akkor valamit elrontottál a designban.
2012. okt. 12. 10:23
Hasznos számodra ez a válasz?
 4/6 A kérdező kommentje:
Ezt kifejtenéd bővebben?
2012. okt. 12. 11:08
 5/6 A kérdező kommentje:

De egy származtatott osztály mindig rendelkezik olyan metódusokkal amikkel a bázisosztály nem.

Ezeket nem lehet elérni ha csak nem alkalmazom a dinamikus kasztolást.


Mi értelme van ennek?

X *x(new Y) ;


Ennek mi értelme van?

Mikor hozzam létre így az objektumot és mikor így:

Y *y(new Y) ;


Mert ha így csinálom:

X *x(new Y) ;

Akkor nem fogom tudni elérni azokat a függvényeket amik nincsenek felülírva és virtuálissá téve.


Érted,hogy mi az amit nem bírok felfogni?

2012. okt. 12. 11:13
 6/6 iostream ***** válasza:
100%

"De egy származtatott osztály mindig rendelkezik olyan metódusokkal amikkel a bázisosztály nem."


Miért? Miért kéne rendelkeznie?

És ha rendelkezik is. Klasszikus példa:

Vannak alakzataid. Mindegyiket ki tudod rajzolni, tehát mindegyik leöröklődik egy Drawable nevű osztályból, aminek egyetlen, draw függvénye van, ami pure virtual. Ekkor ha az összes alakzatot ki akarod rajzolni, elég végigmenni a Drawable* kollekción, és meghívni mindegyikre a draw-t. Ettől még a téglalapnak lehet a és b oldala, a körnek meg sugara, téged ez a rajzolásnál nem érdekel.

Úgy kell megtervezni a programot, hogy ne kelljen külön kezelni őket.

2012. okt. 12. 13:20
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!