Úvod do ovládania v C ++

Prekročenie v C ++ je jedným zo spôsobov, ako dosiahnuť polymorfizmus v čase vykonávania, pri ktorom modifikujeme správanie rovnakej metódy. Podradená trieda spravidla zdedí členské funkcie a dátové členy zo základnej triedy. Ale keď je našou potrebou potlačiť funkčnosť v triede detí, potom musíme použiť funkciu potlačenia funkcií. Prepísanie poskytuje privilégiám na to, aby mali rovnaké názvy v základnej triede aj v odvodenej triede. Umožňuje nám zmeniť funkčné správanie prítomné v základnej triede, v jej odvodených triedach podľa našich potrieb.

Ako funguje Overriding v C ++?

Predtým, ako pochopíme prvoradé hľadisko, najskôr pochopme polymorfizmus. Doslovný význam polymorfizmu je veľa foriem, tj majúcich viac foriem jednej konkrétnej veci. V objektovo orientovanom programovacom jazyku je to jedna z užitočných funkcií. V dedičstve je polymorfizmus dosiahnutý funkciou alebo metódou prvoradou, keď základné aj odvodené triedy majú rovnaké vyhlásenie o funkcii člena, ale ich definícia sa bude líšiť.

Aby sme to dosiahli, musíme najprv zdediť z triedy odvodenú triedu. Potom by sme mali poskytnúť rôzne definície podľa potreby, pre ktorúkoľvek z metód základnej triedy opäť vnútri odvodenej triedy. Až potom sa o tejto funkcii hovorí, že je prepísaná a tento krok za krokom sa nazýva prepísanie funkcie.

Povedzme, že si dáme scenár, v ktorom má naša aplikácia požiadavku zmeniť správanie metódy základnej triedy v odvodenej triede, potom by sme mali použiť funkciu prepísania . Aby sme nahradili funkciu v odvodenej triede, musíme mať v podradenej triede rovnaký podpis. Názvy funkcií by mali byť rovnaké v základných aj odvodených triedach. Podpisom sa tu rozumie použitie rovnakého typu údajov a postupnosti parametrov, ktoré sa majú vo funkcii odovzdať. Ak nie sú potrebné parametre, potom nemusíme používať žiadny parameter v základnej funkcii ani v podradenej funkcii. Nižšie uvádzame niektoré body, na ktoré musíme pamätať skôr, ako použijeme prvoradé prvky.

  • Pri programovaní v C ++ bude prvoradým príkladom polymorfizmus v čase vykonávania alebo dynamický polymorfizmus.
  • Prepísanie je možné iba v metódach prítomných v odvodených triedach, pretože metóda je v odvodenej triede prepísaná zo základnej triedy.
  • Aby sa dosiahol prvoradý význam, funkcie prítomné v základných a odvodených triedach by mali mať rovnaký názov, rovnaký typ návratu a rovnaké parametre.

Metóda, ktorá je potlačená deklaráciou prepísania, sa nazýva prepísaná základná metóda. Základná trieda bude obsahovať túto metódu. Nová implementácia nazývaná metóda prepísania sa zdedí od tejto základnej triedy. Keď vytvoríme objekt odvodenej triedy a zavoláme členskú funkciu, ktorá existuje v základnej aj odvodenej triede, bude ignorovaná členská funkcia základnej triedy a vyvolá sa členská funkcia odvodenej triedy.

Nižšie sú uvedené požiadavky na prepísanie metódy:

  • Prvou a najdôležitejšou vecou je dedičnosť, ktorá by mala existovať od základnej triedy po odvodenú triedu, pretože v tej istej triede nie je možné prepísať funkciu. Na dosiahnutie tohto cieľa potrebujeme základnú triedu a odvodenú triedu.
  • Predefinovaná funkcia by mala mať presne rovnaké vyhlásenie v základných aj odvodených triedach. Čo to znamená? To znamená, že funkcie by mali mať rovnaký názov, rovnaký podpis a rovnaký zoznam parametrov.

Príklad nahradenia

kód

class Animal
(
public:
void Message ( )
(
cout << "Hello there!! I am Animal";
)
);
class Dog: public Animal
(
public:
void Message ( )
(
cout << "I am Dog!!";
)
)

Vo vyššie uvedenom príklade je funkcia Message () v odvodenej triede prepísaná.

Príklad s krokmi

1. Pozrime sa na príklad pomocou funkcie main (), aby sme lepšie porozumeli prvoradým funkciám.

2. Vytvorte základnú triedu s ľubovoľným menom. Tu používam Animal. Napíšte metódu na zobrazenie správy, ktorá sa má zobraziť. Toto bude naša prepísaná metóda, ktorú prepíšeme v zdedenej triede. V rámci metódy napíšte správu na tlač.

class Animal
(
public void Message( )
(
cout << "Hello there!! I am Animal";
)
)

3. Teraz vytvorte ešte jedného psa triedy. Tentokrát to zdedíme zo základnej triedy, ktorú sme vytvorili skôr, tj Animal. Na zdedenie používame symbol „:“.

class Dog: public Animal

4. Tu deklarujeme rovnakú funkciu Message () pre inú implementáciu a napíšeme nejakú správu. Skontrolujte, či sa názov metódy a podpis v odvodenej triede zhodujú s názvom metódy a podpisom v základnej triede.

public void Message ( )
(
cout << "Hey!! I am Dog";
)

5. Potrebujeme ešte jednu triedu, aby sme vykonali funkciu na kontrolu nadradenia. Vytvorte triedu s ľubovoľným menom. Vo vnútri napíšte hlavnú funkciu.

class ExecutionClass
(
int Main( )
(
)
)

6. Vytvorte objekt nadradenej triedy a aktivujte funkciu pomocou objektu triedy. Vyvolá to metódu správy prítomnú v triede Zvieratá.

Animal animalObject;
animalObject.Message( );

7. Teraz vytvorte objekt odvodenej triedy a zavolajte metódu Message. Vyvolá to metódu správy triedy Pes.

Dog dogObject;
dogObject.Message( );

8. Aký bude výstup tohto kódu? Môžete to uhádnuť? Toto je uvedené nižšie.

Výkon:

9. Vo vyššie uvedenom príklade voláme funkciu s rovnakým menom a podpisom, pričom použijeme objekt vytvorený pre odvodenú a základnú triedu osobitne. V obidvoch prípadoch budú pre základnú a odvodenú triedu volané rôzne verzie funkcie.

záver

V tomto článku sme pochopili metódu prvoradého použitia v C ++, potrebu metódy prvoradého použitia, príklady prevažujúceho princípu v reálnom svete, spôsob, ako ju dosiahnuť, a príklad použitia tohto kódu. Môžeme dospieť k záveru, že prvoradým prvkom je polymorfizmus v C ++, v ktorom môžeme zmeniť správanie metódy základnej triedy v odvodenej triede.

Odporúčané články

Toto je príručka pre Overriding v C ++. Tu diskutujeme o tom, ako funguje Overriding v C ++, jednoduchý príklad s rôznymi krokmi. Viac informácií nájdete aj v ďalších súvisiacich článkoch.

  1. Polia v C ++
  2. Úvod do C ++
  3. Príkazy C ++
  4. Kopírovanie Constructor v C ++
  5. Sprievodca prvkami OOP
  6. Prevláda v Jave

Kategórie: