Dedičstvo C ++

C Inheritance



Dedičnosť je veľmi dôležitou vlastnosťou objektovo orientovaného programovania. Programátorovi to umožňuje odvodiť triedu z existujúcej triedy. To je veľmi užitočné hlavne vo veľkom komplexnom projekte, pretože to umožňuje programátorovi znova použiť kód.

V tomto článku sa budeme zaoberať konceptom dedičnosti v programovaní v C ++. Pojem priateľskej funkcie v C ++ vysvetlíme na pracovných príkladoch.







Prečo dedičstvo?

Dedičnosť umožňuje vytvorenie novej triedy alebo odvodenej triedy z inej triedy alebo základnej triedy. Odvodená trieda alebo podradená trieda bude mať všetky vlastnosti rodičovskej triedy alebo základnej triedy. Kód môžeme znova použiť pomocou dedičnosti.



Typ dedičstva

Existujú rôzne typy dedičnosti:



  1. Jednoduché/jediné dedičstvo
  2. Hierarchická dedičnosť
  3. Viacúrovňová dedičnosť
  4. Viacnásobné dedičstvo

V tomto článku sa budeme zaoberať iba jednoduchou/jednou dedičnosťou.





Príklad 1:

Teraz sa pozrime na príklad programu na pochopenie konceptu dedičnosti v C ++. Definovali sme základnú triedu a potom sme z nej odvodili ďalšiu triedu. Odvodená trieda bude mať preto vlastnosti (členy a funkcie) zo základnej triedy.

#zahrnúť

pomocou priestoru názvov std;

trieda Base_Class
{
verejná:
inti;
prázdnydisplej()
{
náklady<< „Zobrazenie základnej triedy“ <<i<<endl;
}

};

trieda Derived_Class:public Base_Class
{
verejná:
prázdnyšou()
{
náklady<< „Ukážka odvodenej triedy“ <<endl;
}
};

intHlavná()
{
Derived_Class dc;
dc.i = 100;
dc.displej();
dc.šou();

vrátiť sa 0;
}



Príklad 2:

Toto je ďalší príklad dedičnosti v C ++. V tomto prípade uvidíme, ako sa volajú konštruktory pri vytváraní odvodeného objektu triedy.

Ako vidíte nižšie, definovali sme dva konštruktory základnej triedy a tri konštruktory odvodených tried. Z nižšie uvedeného výstupu si môžete jasne všimnúť, že pred volaním konštruktora odvodenej triedy sa volá najskôr konštruktor základnej triedy.

#zahrnúť
pomocou priestoru názvov std;

trieda Base_Class
{
verejná:
Základná_trieda()
{
náklady<< „Base_Class - žiadne parametre“ <<endl;
}
Základná_trieda(intX)
{
náklady<< 'Base_Class - Parametre:' <<X<<endl;
}
};

trieda Derived_Class:public Base_Class
{
verejná:
Derived_Class()
{
náklady<< „Derived_Class - žiadne parametre“ <<endl;
}
Derived_Class(inta)
{
náklady<< 'Derived_Class - Parametre:' <<a<<endl;
}
Derived_Class(intX,inta):Základná_trieda(X)
{
náklady<< 'Param triedy Derived_Class:' <<a<<endl;
}
};

intHlavná()
{
Derived_Class d(7,19);
}

Príklad 3:

V tomto prípade uvidíme, ako je možné použiť objekty odvodenej triedy.

Ako vidíte, sú definované dve triedy: Obdĺžniková_trieda a Kocka_Klasická. Rectangle_Class je základná trieda, z ktorej je odvodená trieda, t.j. Cube_Class. Preto dedíme funkcie z triedy Rectangle_Class na Cube_Class.

Tiež si môžete všimnúť, že dedíme Cube_Class s verejným riadením prístupu. To znamená, že odvodená trieda má prístup ku všetkým súkromným členom základnej triedy.

Deklarovali sme objekt odvodenej triedy a potom zavolali metódy zo základnej triedy, tj. SetLength () a setBreadth ().

#zahrnúť

pomocou priestoru názvov std;

trieda Obdĺžnik_trieda
{
súkromné:
intdĺžka;
intšírka;
verejná:
Obdĺžnik_trieda();
Obdĺžnik_trieda(intthe,intb);
Obdĺžnik_trieda(Obdĺžnik_trieda&r);
intgetLength()
{
vrátiť sadĺžka;
}
intgetBreadth()
{
vrátiť sašírka;
}
prázdnysetLength(intthe);
prázdnysetBreadth(intb);
intoblasť();
};

trieda Cube_Class:public Rectangle_Class
{
súkromné:
intvýška;
verejná:
Trieda kocky(inth)
{
výška=h;
}
intgetHeight()
{
vrátiť savýška;
}
prázdnysetHeight(inth)
{
výška=h;
}
intobjem()
{
vrátiť sagetLength()*getBreadth()*výška;
}
};


Obdĺžnik_trieda::Obdĺžnik_trieda()
{
dĺžka=1;
šírka=1;
}
Obdĺžnik_trieda::Obdĺžnik_trieda(intthe,intb)
{
dĺžka=the;
šírka=b;
}
Obdĺžnik_trieda::Obdĺžnik_trieda(Obdĺžnik_trieda&r)
{
dĺžka=r.dĺžka;
šírka=r.šírka;
}
prázdnyObdĺžnik_trieda::setLength(intthe)
{
dĺžka=the;
}
prázdnyObdĺžnik_trieda::setBreadth(intb)
{
šírka=b;
}
intObdĺžnik_trieda::oblasť()
{
vrátiť sadĺžka*šírka;
}

intHlavná()
{
Cube_Class c(8);
c.setLength(12);
c.setBreadth(9);
náklady<<„Hlasitosť je“<<c.objem()<<endl;
}

Záver:

V tomto článku som vysvetlil koncept dedičnosti v C ++ . Jazyk C ++ podporuje rôzne typy dedičnosti vrátane viacnásobnej dedičnosti (t. J. Dedenia funkcií z viacerých základných tried alebo nadradených tried). Aby som to však zjednodušil, zvažoval som tu iba jedno dedičstvo. Ukázal som tri pracovné príklady, aby som vysvetlil, ako môžeme použiť dedičnosť v programovaní v C ++ a znova použiť kód. Navyše je to veľmi užitočná funkcia C ++.