Virtuálna metóda: Porovnání verzí

Z Delphi & Pascal (česká wiki)
Skočit na navigaci Skočit na vyhledávání
(dedenie metód;metóda;polymorfizmus;prevzatie metódy predka;virtuálna metóda)
 
m (1 revízia: Objektovo orientované programovanie)
 
(Žádný rozdíl)

Aktuální verze z 21. 9. 2012, 15:33

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í.