Úvod do Overriding v C ++
Převažující v C ++ je jedním ze způsobů, jak dosáhnout běhu polymorfismu, ve kterém upravujeme chování stejné metody. Obecně podřízená třída zdědí členské funkce a datové členy ze základní třídy. Když však potřebujeme potlačit funkčnost v podřízené třídě, musíme použít funkci potlačení funkcí. Přepisování poskytuje oprávnění k metodám mít stejný název v základní třídě i v odvozené třídě. Umožňuje nám to změnit funkční chování přítomné v základní třídě, v jejích odvozených třídách podle naší potřeby.
Jak Overriding funguje v C ++?
Než porozumíme prvořadému problému, nejprve pochopíme polymorfismus. Doslovný význam polymorfismu je mnoho forem, tj. Mající více forem jedné konkrétní věci. V objektově orientovaném programovacím jazyce je to jedna z užitečných funkcí. V dědičnosti je polymorfismus dosažen funkcí nebo metodou převažující, když jak základní, tak odvozené třídy mají stejné prohlášení o členské funkci, ale jejich definice se bude lišit.
K tomu musíme nejdříve zdědit třídu po odvozené třídě. Pak bychom měli poskytnout různé definice podle potřeby, pro kteroukoli z metod základní třídy znovu uvnitř odvozené třídy. Teprve poté je tato funkce označena za potlačenou a tento krok za krokem se nazývá Overriding Function.
Řekněme například, že naše aplikace má požadavek na změnu chování metody základní třídy ve odvozené třídě, pak bychom měli použít funkci potlačení . Abychom přepsali funkci ve odvozené třídě, musíme mít stejný podpis v podřízené třídě, také jména funkcí by měla být stejná v základnách i odvozených třídách. Podpis zde znamená použití stejného datového typu a posloupnosti parametrů, které mají být ve funkci předány. Pokud není potřeba parametrů, pak nemusíme používat žádný parametr v základní funkci ani v podřízené funkci. Níže uvádíme několik bodů, které musíme mít na paměti, než začneme používat převažující prvky.
- V programování v C ++ bude prvořadým příkladem polymorfismus za běhu nebo dynamický polymorfismus.
- Přepsání je možné pouze u metod přítomných v odvozených třídách, protože metoda je v odvozené třídě přepsána ze základní třídy.
- Aby se dosáhlo převažující funkce, funkce přítomné v základních a odvozených třídách by měly mít stejný název, stejný typ návratu a stejné parametry.
Metoda, která je přepsána deklarací přepsání, se nazývá přepsaná základní metoda. Základní metoda bude obsahovat tuto metodu. Z této základní třídy se zdědí nová implementace zvaná metoda override. Když vytvoříme objekt odvozené třídy a zavoláme členskou funkci, která existuje v základní i odvozené třídě, bude ignorována členská funkce základní třídy a vyvolána členská funkce odvozené třídy.
Níže jsou uvedeny požadavky na přepsání metody:
- První a nejdůležitější věcí je dědičnost, která by měla existovat od základny k odvozené třídě, protože v téže třídě nelze přepsat funkci. K dosažení tohoto cíle potřebujeme základní třídu a odvozenou třídu.
- Předefinovaná funkce by měla mít přesně stejné deklarace jak v základní, tak odvozené třídě. Co to znamená? To znamená, že funkce by měly mít stejný název, stejný podpis a stejný seznam parametrů.
Příklad potlačení
Kód
class Animal
(
public:
void Message ( )
(
cout << "Hello there!! I am Animal";
)
);
class Dog: public Animal
(
public:
void Message ( )
(
cout << "I am Dog!!";
)
)
Ve výše uvedeném příkladu je funkce Message () přepsána v odvozené třídě.
Příklad s kroky
1. Podívejme se na příklad pomocí funkce main (), abychom lépe porozuměli převažujícím prvkům.
2. Vytvořte základní třídu s libovolným názvem. Tady používám zvíře. Napište metodu pro zobrazení nějaké zprávy k zobrazení. Toto bude naše přepsaná metoda, kterou přepíšeme ve zděděné třídě. Uvnitř metody napište nějakou zprávu k tisku.
class Animal
(
public void Message( )
(
cout << "Hello there!! I am Animal";
)
)
3. Nyní vytvořte ještě jednu třídu psa. Tentokrát to zdědíme ze základní třídy, kterou jsme vytvořili dříve, tj. Animal. Pro zdědění používáme symbol ':'.
class Dog: public Animal
4. Zde deklarujeme stejnou funkci Message () pro různé implementace a zapíšeme nějakou zprávu. Ujistěte se, že název metody a podpis v odvozené třídě odpovídají názvu metody a podpisu v základní třídě.
public void Message ( )
(
cout << "Hey!! I am Dog";
)
5. K provedení funkce pro kontrolu nadřazení potřebujeme ještě jednu třídu. Vytvořte třídu s libovolným jménem. Uvnitř toho napište hlavní funkci.
class ExecutionClass
(
int Main( )
(
)
)
6. Vytvořte objekt nadřazené třídy a spusťte funkci pomocí objektu třídy. Vyvolá metodu Message přítomnou ve třídě Animal.
Animal animalObject;
animalObject.Message( );
7. Nyní vytvořte objekt odvozené třídy a zavolejte metodu Message. Vyvolá metodu Message třídy Dog.
Dog dogObject;
dogObject.Message( );
8. Jaký bude výstup tohoto kódu? Můžete to uhodnout? To je znázorněno níže.
Výstup:
9. Ve výše uvedeném příkladu voláme funkci se stejným názvem a podpisem, přičemž používáme objekt vytvořený pro odvozenou a základní třídu zvlášť. V obou případech budou pro základní a odvozenou třídu vyvolány různé verze funkce.
Závěr
V tomto článku jsme pochopili metodu převažující v C ++, potřebu převažující metody, příklady převažujícího principu v reálném světě, způsob, jak toho dosáhnout, a příklad převedení pomocí kódu. Můžeme dojít k závěru, že potlačení je jedním z užitečných rysů v polymorfismu v C ++, ve kterém můžeme změnit chování metody základní třídy v odvozené třídě.
Doporučené články
Toto je průvodce k Overriding v C ++. Zde diskutujeme o tom, jak funguje Overriding v C ++, jednoduchý příklad s různými kroky. Další informace naleznete také v dalších souvisejících článcích.
- Pole v C ++
- Úvod do C ++
- Příkazy C ++
- Kopírovat konstruktor v C ++
- Průvodce přepisováním v OOP
- Převažující v Javě