Skip to main content

Co je převažující metoda?

Přepsání metody se používá v objektově orientovaném programování v hierarchii dědičnosti a dochází k tomu, když je metoda definovaná v nadřazené třídě předefinována v podtřídě.Metoda podtřídy obvykle dělá něco jiného než metoda superclass nebo se rozšiřuje o schopnost superclass, ale nemusí tomu tak být.K převahu metody dochází vždy, když je metoda superclasy předefinována v podtřídě, bez ohledu na obsah předefinované metody.Předefinované podpisy metody musí být přesně stejné.Kromě toho mohou být třídy B a C podtřídy třídy A. Třída B může obsahovat metodu zvanou dosomething, která nebere žádné vstupní parametry, a třída C může obsahovat metodu, která má jako vstupní parametr.V tomto příkladu by pouze třída B prokázala převažující metodu, protože její metoda dosomething má stejný podpis metody jako jeho superclass, třída A. Na druhé straně metoda dos -něco ve třídě C ukazuje přetížení metody, protože vytváří zcela novou metodu, protože vytváří zcela novou metodu.

Virtuální dědičnost v C ++ je dalším příkladem převažující metody.Virtuální metody v superclassech mohou nebo nemusí být implementovány, ale jakákoli jejich definice podtřídy je instancí převažující metody.Když je metoda přepsána v podtřídě, metoda superclasy není volána, pokud není vyvolána explicitně.Tento specifický způsob volání přepsané metody se často říká, že skrývá implementaci super třídy.

Ačkoli převažující metoda je velmi flexibilní, ne všechny metody mohou být přepsány a jsou chvíle, kdy by tato rigidita mohla být vhodnější.V JAVA i C ++ lze v podpisech metod použít specifická klíčová slova, aby se zabránilo přepsání metody v podtřídě.K tomu Java používá konečné klíčové slovo a C ++ používá klíčové slovo const.Prevence převažování metody může být prospěšná, pokud by se konkrétní funkce měla vždy měnit po celém stromu dědictví.Případy, které mají tendenci nejvíce těžit z přepsání, jsou, když podtřída si klade za cíl přidat funkčnost k metodě superclass, aniž by to vytvořilo zcela novou metodu.Z této techniky by také mohly mít prospěch také neobvyklé případy, kdy metoda je třeba zcela přepracovat pro jeden konkrétní typ objektu.Kdykoli je metoda přepsána, je důležité, aby programátor adekvátně komentoval metody superclass i podtřídy.V ideálním případě by tyto komentáře měly objasnit, co každá varianta metody dělá, a jak a proč se liší.