Co je abstraktní metoda?
V objektově orientovaném programování se pro provádění funkcí v programu používají podprogramy nazývané „metody“. Tyto metody sestávají z programovacích příkazů, které provádějí akci, nastavují vstupní parametry pro přizpůsobení akcí a mohou vracet nebo vydávat hodnotu nějakého druhu objektu nebo třídy. Metody jsou akce prováděné v programu z určité třídy nebo v rámci objektu a používají se k přístupu a manipulaci s daty uloženými v objektu. Existuje mnoho různých metod a každá z nich má zvláštní využití. Specifický typ, který se provádí z abstraktní super třídy a zděděný podtřídami, se nazývá abstraktní metoda.
Obecně platí, že abstraktní metoda provádí malou nebo žádnou implementaci v rámci své abstraktní super třídy. Kódy obsažené v tomto druhu metody jsou považovány za fiktivní kódy a nejsou implementovány samy. To neznamená, že konkrétní abstraktní metoda v konkrétní abstraktní třídě není zvyklá. Abstraktní metoda spíše funguje jako model nebo zástupný symbol pro podtřídy k dokončení implementace metody.
Super třídy mohou obsahovat více podtříd a všechny podtřídy nadřazené třídy mají určité podobné stavy a chování. Abstraktní třídy jsou proto typem virtuální třídy, která vykazuje virtuální dědičnost. To znamená, že jakákoli podtřída odvozená od super třídy zdědí omezení super třídy, od které je odvozena. Proto jsou metody v podtřídách odvozeny od abstraktních metod super tříd. Při programování a používání abstraktních metod musí programátor deklarovat třídu abstrakt spíše než virtuální.
Například super třída „Grafické objekty“ obsahuje podtřídy „Kruh“, „Čtverec“ atd. Všechny kruhy a čtverce tedy mají stejné stavy - orientace, poloha, barva výplně, barva čáry - a chování - moveTo , změna velikosti, otočení, kreslení - jako „grafické objekty“. Všechny podtřídy v této super třídě mají stejné vlastnosti, ale jsou implementovány různými způsoby. Abstraktní metoda nadřazené třídy poskytuje základy bez implementace a podtřídy provádějí skutečnou implementaci pomocí stejných metod. I když každá podtřída používá stejnou metodu jako abstraktní třída, jednoznačně definují způsob, jakým bude metoda prováděna.
Použití abstraktní metody umožňuje zobecnění na nejvyšší úrovni nebo super třídě a specifikace na nižších úrovních nebo podtřídách. Tato hierarchie minimalizuje množství programování metod pro každou konkrétní podtřídu. Použití těchto metod také umožňuje idempotenci podtříd, což znamená, že pokud je metoda implementována znovu a znovu, je výsledek pokaždé stejný.