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

  1. Pole v C ++
  2. Úvod do C ++
  3. Příkazy C ++
  4. Kopírovat konstruktor v C ++
  5. Průvodce přepisováním v OOP
  6. Převažující v Javě

Kategorie: