Vse, kar morate vedeti o dedovanju v C ++



V tem članku boste našli podrobno in celovito znanje o dedovanju v jeziku C ++, njegovih vrstah in kako to uporabiti.

C ++ je objektno usmerjen jezik. Abstrakcija podatkov, polimorfizem, inkapsulacija in dedovanje so temelji OOP. V tem prispevku bomo razumeli, kaj je dedovanje? Vrste dedovanja v jeziku C ++ in vsi potrebni koncepti, povezani z njo. Na koncu bomo pogledali tudi pomanjkljivost tega močnega koncepta in ga poskušali rešiti.

Kaj je dedovanje v jeziku C ++

Dedovanje je eden najmočnejših in najpogosteje uporabljenih konceptov v jeziku C ++ ali katerem koli drugem objektno usmerjenem jeziku. Razumevanje tega koncepta zahteva malo znanja razredov in predmetov. Z uporabo dedovanja lahko ustvarimo razred, ki je sestavljen iz splošnih metod in atributov. Ta razred lahko podedujejo drugi razredi, ki vsebujejo natančnejše metode.





Dedovanje v jeziku C ++

S tem nam ni treba vedno znova pisati istih funkcij, kar prihrani čas in poveča berljivost kode.



Sintaksa:

razred izveden_razred: dostop_tip osnovni_razred {// telo telesa}

Osnovni razred: Razred, ki je sestavljen iz vseh splošnih metod in atributov, ki jih lahko delijo drugi razredi za povečanje berljivosti kode, se imenuje osnovni razred.

Izpeljani razred: Razred, ki je sestavljen iz natančnejših metod in podeduje razred, se imenuje izpeljani razred. Izpeljani razred je lahko tudi osnovni razred za kak drug izpeljani razred.



Če ustvarimo razred XYZ, z nekaterimi atributi in metodami. Zdaj bo študent imel nekatere druge atribute, vključeval pa bo tudi elemente razreda XYZ, kar velja tudi za fakultetni razred. Poglejmo diagram:

Torej bodo študentski in fakultetni razred podedovali po XYZ.

Specifikator dostopa- Razumeli smo, kako lahko razred podeduje drug razred. Toda nekateri bi lahko rekli, da gre za nevarno metodo, saj so vsi atributi in metode osnovnega razreda ali nadrejenega razreda v skupni rabi z nadrejenim razredom ali izpeljanim razredom. Na primer, če razred 'banka' podeduje razred 'kupci' in 'vlagatelji'. Atributi razreda 'Bank', kot je 'vaultpassword', druge informacije, povezane s strankami, in zasebni podatki se delijo z 'kupci' in razredom 'investitorji', kar ni varno.

Za rešitev zgoraj navedene težave C ++ uporablja specifikatorje dostopa za omejitev dostopa do atributov osnovnega razreda do izvedenega razreda. V jeziku C ++ obstajajo skupno 3 vrste specifikatorjev dostopa

  1. Javno
  2. Zasebno
  3. Zaščiteno

Spodnja tabela vam bo dala dobro razumevanje, do katere vrste podatkov lahko dostopa izpeljani razred v skladu z različnimi specifikacijami dostopa.

Določnik dostopa Javni podatki Zasebni podatki Zaščiteni podatki
Zasebno Ni podedovanoNi podedovanoNi podedovano
Zaščiteno Zaščiteno Zasebno Zaščiteno
Javno Javno Zasebno Zaščiteno

Enkratno dedovanje

Enkratno dedovanje lahko štejemo za navadno vanilijsko obliko dedovanja. Pri enojnem dedovanju en razred podeduje iz osnovnega razreda.

#include using namespace std class Train {int Numberofwheels int Numberofcoaches public: void Traininfo (int n, int m) {Numberofwheels = n Numberofcoaches = m} void showinfo () {cout<Ta primer dedovanja se imenuje večstopenjsko dedovanje. Razred med prvim in zadnjim razredom je znan tudi kot vmesni osnovni razred.Kaj menite, ali lahko zadnji razred podeduje člane prvega razreda? Ja, lahko

#include z uporabo imenskega prostora std class First {protected: int a public: void getinfofirst (int x) {a = x} void showinfofirst () {std :: cout<< 'Value of a = ' < 

Izhod:

podatkovne strukture in algoritmi v vadnici Java

Vrednost a = 10

Vrednost b = 20

Vrednost c = 30

Vrednost d = 50

Hierarhično dedovanje

Določenih težav ni mogoče rešiti s pomočjo eno- ali večnivojske dediščine. Pri hierarhičnem dedovanju iz enega osnovnega razreda podeduje več kot 1 razred.

#include using namespace std class College {public: College () {cout<< 'We are in class College' << endl } } class Student: public College { } class Faculty: public College { } int main() { Student student Faculty faculty return 0 }

Izhod:

Smo v razredu College

Smo v razredu College

Večkratno dedovanje v jeziku C ++

V hierarhičnem dedovanju smo videli, da je imel en osnovni razred več izpeljanih razredov. Pri večkratnem dedovanju ima en izpeljani razred več kot en osnovni razred.

#include z uporabo imenskega prostora std class One {protected: int a public: void getinfoOne (int x) {a = x}} class Two {protected: int b public: void getinfoTwo (int y) {b = y}} class Main: javno Eno, javno Dve {public: void Display () {std :: cout<< 'Value of a = ' < Na tej točki dobro razumemo vse vrste dedovanja, ki se uporabljajo v jeziku C ++. Toda počakajte, kaj, če želimo uporabiti dve različni vrsti dedovanja? Ali je možno? Da, mogoče je s pomočjo hibridne dediščine. Pri hibridnem dedovanju kombiniramo 2 različni vrsti dedovanja. Na primer - večstopenjsko in večkratno dedovanje, hierarhično in več dedovanje itd.

#include z uporabo imenskega prostora std class World {protected: int a public: void getinfoWorld (int x) {a = x}} class Continent: public World {protected: int b public: void getinfoContinent (int y) {b = y}} razred država {zaščiteno: int d javno: void getinfoCountry (int m) {d = m}} razred Avstralija: javna celina, javna država {public: void Display () {std :: cout<< 'Value of a = ' < 

Razumejmo zgornji diagram, ki nam bo pomagal pri razumevanju problema diamantov. razred B in razred C podedujeta iz razreda A, zato imata razred A in razred B atribute in metode razreda A. če razred D podeduje razred B in razred C. bo razred D imel vse atribute razreda B in razreda C Vsebuje tudi vse atribute razreda A, podedovane od razreda B, pa tudi razreda C. zato, če naredimo objekt razreda D in pokličemo metodo razreda A., bo nastala dvoumna situacija in prevajalnik bo zmeden to bi morala biti metoda razreda A, iz razreda B ali razreda D.

Za rešitev te dvoumnosti uporabljamo koncept, imenovan virtualni osnovni razred. Ko osnovni razred naredimo navidezni osnovni razred, se podeduje le ena kopija tega razreda, ne glede na število obstoječih poti med navideznim osnovnim razredom in izpeljanim razredom.

razred A {} razred B: navidezni javni A {} razred C: navidezni javni A {} razred D: javni C, javni D {}

S tem smo prišli do konca tega članka o dedovanju v jeziku C ++. Če želite izvedeti več, si oglejte Edureka, zaupanja vredno podjetje za spletno učenje. Edurekin tečaj za usposabljanje in certificiranje Java J2EE in SOA je zasnovan tako, da vas usposobi za temeljne in napredne koncepte Java, skupaj z različnimi Java okviri, kot sta Hibernate & Spring.

Imate vprašanje za nas? Prosimo, omenite to v oddelku za komentarje tega spletnega dnevnika, mi pa se vam bomo javili v najkrajšem možnem času.