Virtuálna metóda: Porovnání verzí
(dedenie metód;metóda;polymorfizmus;prevzatie metódy predka;virtuálna metóda) |
(Žádný rozdíl)
|
Verze z 21. 9. 2012, 14:06
Prečítajte si najskôr heslá Polymorfizmus a Statická metóda.
Ak je metóda ( napríklad Draw() ) špecifikovaná v predchodcovi aj nasledovníkovi ako virtuálna, potom sa bude procedúra Print_and_Draw() volaná z nasledovníka správať “korektne”, podľa našich predstáv – aj keď je deklarovaná v predchodcovi, zavolá metódu Draw() nasledovníka.
Metóda sa prehlási za virtuálnu, keď za jej hlavičku napíšeme (aj v objekte aj v implementácii) kľúčové slovo virtual:
procedure Draw( ... ); virtual;
V Turbo Pascale, ak má objekt čo len jednu virtuálnu metódu, musí mať aj aspoň jeden konštruktor. Tento konštruktor môže byť “prázdny” – nemusí obsahovať žiadny príkaz, ale musí byť prítomný. Pri jeho implicitnej výzve Pascal zistí, že v objekte sú aj virtuálne metódy a korektne ich pripojí.