C ++ dedovanje

C Inheritance



Dedovanje je zelo pomembna lastnost objektno usmerjenega programiranja. Programerju omogoča, da izpelje razred iz obstoječega razreda. To je zelo uporabno, zlasti v velikem kompleksnem projektu, saj programerju omogoča ponovno uporabo kode.

V tem članku bomo obravnavali koncept dedovanja v programiranju C ++. Koncept funkcije prijatelja bomo v C ++ razložili z delovnimi primeri.







Zakaj dedovanje?

Dedovanje omogoča ustvarjanje novega razreda ali izpeljanega razreda iz drugega razreda ali osnovnega razreda. Izpeljani razred ali podrejeni razred bo imel vse funkcije nadrejenega razreda ali osnovnega razreda. Kodo lahko ponovno uporabimo s pomočjo dedovanja.



Vrsta dedovanja

Obstajajo različne vrste dedovanja:



  1. Enostavno/enojno dedovanje
  2. Hierarhična dediščina
  3. Dedovanje na več ravneh
  4. Večkratna dediščina

V tem članku bomo obravnavali le preprosto/enojno dedovanje.





Primer 1:

Zdaj pa poglejmo primer programa za razumevanje koncepta dedovanja v C ++. Opredelili smo osnovni razred in nato iz njega izpeljali drug razred. Zato bo izpeljani razred imel lastnosti (člane in funkcije) iz osnovnega razreda.

#vključi

z uporabo imenskega prostora std;

razred Base_Class
{
javno:
intjaz;
ničnozaslon()
{
stroški<< 'Prikaz osnovnega razreda' <<jaz<<endl;
}

};

razred Derived_Class:javni Base_Class
{
javno:
ničnopokazati()
{
stroški<< 'Predstava izpeljanega razreda' <<endl;
}
};

intglavni()
{
Izpeljani_razred dc;
dc.jaz = 100;
dc.zaslon();
dc.pokazati();

vrnitev 0;
}



Primer 2:

To je še en primer dedovanja v C ++. V tem primeru bomo videli, kako se konstruktorji kličejo, ko je ustvarjen predmet izpeljanega razreda.

Kot lahko vidite spodaj, smo definirali dva konstruktorja osnovnega razreda in tri konstruktorje izpeljanega razreda. Iz spodnjega izhoda lahko jasno opazite, da se konstruktor osnovnega razreda najprej pokliče, preden se pokliče konstruktor izpeljanega razreda.

#vključi
z uporabo imenskega prostora std;

razred Base_Class
{
javno:
Base_Class()
{
stroški<< 'Base_Class - brez parametrov' <<endl;
}
Base_Class(intx)
{
stroški<< 'Base_Class - Parametri:' <<x<<endl;
}
};

razred Derived_Class:javni Base_Class
{
javno:
Izpeljani_razred()
{
stroški<< 'Derived_Class - No Parameters' <<endl;
}
Izpeljani_razred(intin)
{
stroški<< 'Derived_Class - Parameters:' <<in<<endl;
}
Izpeljani_razred(intx,intin):Base_Class(x)
{
stroški<< 'Param izpeljanega_razreda:' <<in<<endl;
}
};

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

Primer 3:

V tem primeru bomo videli, kako je mogoče uporabiti predmete izpeljanega razreda.

Kot lahko vidite, sta definirana dva razreda: Rectangle_Class in Cube_Class. Rectangle_Class je osnovni razred, iz katerega izhaja izvedeni razred, torej Cube_Class. Zato podedujemo funkcije iz Rectangle_Class v Cube_Class.

Prav tako lahko opazite, da podedujemo Cube_Class z javnim nadzorom dostopa. To pomeni, da lahko izpeljani razred dostopa do vseh zasebnih članov osnovnega razreda.

Razglasili smo objekt izpeljanega razreda in nato poklicali metode iz osnovnega razreda, to je setLength () in setBreadth ().

#vključi

z uporabo imenskega prostora std;

razred Rectangle_Class
{
zasebno:
intdolžino;
intširina;
javno:
Pravokotnik_Klasa();
Pravokotnik_Klasa(intthe,intb);
Pravokotnik_Klasa(Pravokotnik_Klasa&r);
intgetLength()
{
vrnitevdolžino;
}
intgetBreadth()
{
vrnitevširina;
}
ničnosetLength(intthe);
ničnosetBreadth(intb);
intobmočje();
};

razred Cube_Class:javni pravokotnik_Klasa
{
zasebno:
intvišina;
javno:
Cube_Class(inth)
{
višina=h;
}
intgetHeight()
{
vrnitevvišina;
}
ničnosetHeight(inth)
{
višina=h;
}
intglasnost()
{
vrnitevgetLength()*getBreadth()*višina;
}
};


Pravokotnik_Klasa::Pravokotnik_Klasa()
{
dolžino=1;
širina=1;
}
Pravokotnik_Klasa::Pravokotnik_Klasa(intthe,intb)
{
dolžino=the;
širina=b;
}
Pravokotnik_Klasa::Pravokotnik_Klasa(Pravokotnik_Klasa&r)
{
dolžino=r.dolžino;
širina=r.širina;
}
ničnoPravokotnik_Klasa::setLength(intthe)
{
dolžino=the;
}
ničnoPravokotnik_Klasa::setBreadth(intb)
{
širina=b;
}
intPravokotnik_Klasa::območje()
{
vrnitevdolžino*širina;
}

intglavni()
{
Cube_Class c(8);
c.setLength(12);
c.setBreadth(9);
stroški<<'Glasnost je'<<c.glasnost()<<endl;
}

Zaključek:

V tem članku sem razložil pojem dedovanja v C ++ . C ++ podpira različne vrste dedovanja, vključno z več dedovanjem (tj. Podedovanje funkcij iz več osnovnih razredov ali nadrejenega razreda). Za poenostavitev sem tukaj upošteval le eno dediščino. Pokazal sem tri delovne primere, ki pojasnjujejo, kako lahko uporabimo dedovanje pri programiranju C ++ in kodo ponovno uporabimo. Poleg tega je to zelo uporabna lastnost C ++.