Objektově orientované programování: Porovnání verzí

Smazaný obsah Přidaný obsah
m →‎Metody: čeština
značky: editace z mobilu editace z mobilní aplikace editace z mobilní aplikace pro Android
m →‎Metody: čeština 2
značky: editace z mobilu editace z mobilní aplikace editace z mobilní aplikace pro Android
Řádek 60:
Někdy se rodičovská metoda, třeba ''chodit()'', nejen přetěžuje, ale navíc ještě zcela úmyslně překrývá: Třeba zmiňovaný ''Akrobat'' se naučil chodit po laně, proto je pro něj žádoucí při volání metody ''chodit()'' nejdříve zkusit svou novou schopnost, a až pak použít obecnější ''chodit()'' od předka. Nejdříve se ověří, zda ''Akrobat'' ''je_na_laně'', podle této podmínky se buď interně zavolá ''chodit(po_laně)'', nebo se výslovně zavolá ona zděděná ale právě zakrývaná metoda ''parent.chodit()'' od předka.
 
''Akrobat'' nemusí být odděděn od ''Člověk''a ale třeba od ''Atlet''a a ten teprve od ''Člověk''a. Potom když ''Akrobat'' volá metodu předka ''parent.chodit()'', nemusí to znamenat chodit po zemi jako u ''Člověk''a, ale třeba chodit po kladině: Metody předků se volají po jednom, zpětně ve sledu dědění, například: ''Akrobat.chodit()'' (po laně); když neplatí ''je_na_laně'', zavolá ''Atlet.chodit()'' (po žíněnce). Když platí ''je_na_žíněnce'', na volání samotné ''Člověk.chodit()'' (po zemi) se nedostane, protože byla splněna jedna z podmínek v překrytých metodách ve sledu dědění.
 
Obecně se při překrývání může ověřovat nějaká zadaná podmínka, zde prostředí, nebo před zavoláním metody předka zařídit inicializaci, vrácení prostředků systému apod. Podobná konstrukce je podstatná pro [[destruktor]], někdy se používá i s [[konstruktor]]y.