C ++ nasljeđivanje

C Inheritance



Nasljeđivanje je vrlo važna značajka objektno orijentiranog programiranja. Omogućuje programeru da izvede klasu iz postojeće klase. To je vrlo korisno, osobito u velikom složenom projektu jer omogućuje programeru ponovnu uporabu koda.

U ovom ćemo članku raspravljati o konceptu nasljeđivanja u C ++ programiranju. Koncept funkcije prijatelja objasnit ćemo u radnim primjerima u C ++.







Zašto nasljeđivanje?

Nasljeđivanje omogućuje stvaranje nove klase ili izvedene klase iz druge klase ili osnovne klase. Izvedena klasa ili podređena klasa imat će sve značajke nadređene klase ili osnovne klase. Kôd možemo ponovno koristiti uz pomoć nasljeđivanja.



Vrsta nasljeđivanja

Postoje različite vrste nasljeđivanja:



  1. Jednostavno/pojedinačno nasljeđivanje
  2. Hijerarhijsko nasljeđivanje
  3. Višerazinsko nasljeđivanje
  4. Više nasljeđivanja

U ovom ćemo članku razmotriti samo jednostavno/pojedinačno nasljeđivanje.





Primjer 1:

Pogledajmo sada primjer programa za razumijevanje koncepta nasljeđivanja u C ++. Definirali smo osnovnu klasu, a zatim iz nje izveli drugu klasu. Stoga će izvedena klasa imati značajke (članove i funkcije) iz osnovne klase.

#uključi

koristeći imenski prostor std;

klasa Base_Class
{
javnost:
inti;
poništitiprikaz()
{
trošak<< 'Prikaz osnovne klase' <<i<<endl;
}

};

klasa Izvedena_klasa:javna Baza_Klasa
{
javnost:
poništitipokazati()
{
trošak<< 'Predstava izvedene klase' <<endl;
}
};

intglavni()
{
Izvedena_razred dc;
dc.i = 100;
dc.prikaz();
dc.pokazati();

povratak 0;
}



Primjer 2:

Ovo je još jedan primjer nasljeđivanja u C ++. U ovom primjeru ćemo vidjeti kako se konstruktori zovu kada se stvori objekt izvedene klase.

Kao što možete vidjeti u nastavku, definirali smo dva konstruktora osnovne klase i tri konstruktora izvedene klase. Iz donjeg izlaza možete jasno primijetiti da se konstruktor osnovne klase prvo poziva prije nego što se pozove konstruktor izvedene klase.

#uključi
koristeći imenski prostor std;

klasa Base_Class
{
javnost:
Base_Class()
{
trošak<< 'Base_Class - bez parametara' <<endl;
}
Base_Class(intx)
{
trošak<< 'Base_Class - Parametri:' <<x<<endl;
}
};

klasa Izvedena_klasa:javna Baza_Klasa
{
javnost:
Izvedena_klasa()
{
trošak<< 'Izvedena_klasa - bez parametara' <<endl;
}
Izvedena_klasa(inti)
{
trošak<< 'Izvedena_klasa - parametri:' <<i<<endl;
}
Izvedena_klasa(intx,inti):Base_Class(x)
{
trošak<< 'Param izvedene_razrede:' <<i<<endl;
}
};

intglavni()
{
Izvedena_razred d(7,19);
}

Primjer 3:

U ovom primjeru ćemo vidjeti kako se mogu koristiti izvedeni objekti klase.

Kao što vidite, postoje dvije klase definirane: Rectangle_Class i Cube_Class. Rectangle_Class je osnovna klasa iz koje je izvedena klasa, tj. Cube_Class. Stoga nasljeđujemo značajke iz Rectangle_Class u Cube_Class.

Također, možete primijetiti da nasljeđujemo Cube_Class s javnom kontrolom pristupa. To znači da izvedena klasa može pristupiti svim privatnim članovima osnovne klase.

Deklarirali smo objekt izvedene klase, a zatim pozvali metode iz osnovne klase, tj. SetLength () i setBreadth ().

#uključi

koristeći imenski prostor std;

klasa Pravokutnik_Klasa
{
privatna:
intduljina;
intširina;
javnost:
Pravokutnik_Klasa();
Pravokutnik_Klasa(intthe,intb);
Pravokutnik_Klasa(Pravokutnik_Klasa&r);
intgetLength()
{
povratakduljina;
}
intgetBreadth()
{
povratakširina;
}
poništitisetLength(intthe);
poništitisetBreadth(intb);
intpodručju();
};

klase Cube_Class:javni pravokutnik_Klasa
{
privatna:
intvisina;
javnost:
Kocka_Klasa(inth)
{
visina=h;
}
intgetHeight()
{
povratakvisina;
}
poništitisetHeight(inth)
{
visina=h;
}
intvolumen()
{
povratakgetLength()*getBreadth()*visina;
}
};


Pravokutnik_Klasa::Pravokutnik_Klasa()
{
duljina=1;
širina=1;
}
Pravokutnik_Klasa::Pravokutnik_Klasa(intthe,intb)
{
duljina=the;
širina=b;
}
Pravokutnik_Klasa::Pravokutnik_Klasa(Pravokutnik_Klasa&r)
{
duljina=r.duljina;
širina=r.širina;
}
poništitiPravokutnik_Klasa::setLength(intthe)
{
duljina=the;
}
poništitiPravokutnik_Klasa::setBreadth(intb)
{
širina=b;
}
intPravokutnik_Klasa::području()
{
povratakduljina*širina;
}

intglavni()
{
Kocka_Klasa c(8);
c.setLength(12);
c.setBreadth(9);
trošak<<'Volumen je'<<c.volumen()<<endl;
}

Zaključak:

U ovom članku objasnio sam pojam nasljeđivanja u C ++ . C ++ podržava različite vrste nasljeđivanja, uključujući više nasljeđivanja (tj. Nasljeđivanje značajki iz više osnovnih klasa ili roditeljske klase). Međutim, radi pojednostavljenja, ovdje sam razmatrao samo jedno nasljeđivanje. Prikazao sam tri radna primjera kako bih objasnio kako možemo koristiti nasljeđivanje u C ++ programiranju i ponovno koristiti kod. Štoviše, ovo je vrlo korisna značajka C ++.