Rekommenderas, 2024

Redaktionen

Skillnad mellan singel och flera arv

Erfarenhet stöder starkt konceptet om återanvändning, dvs nybildad klass återanvänder egenskaperna hos redan befintliga. Access specifier bestämmer hur basklassmedlem kommer att vara ärft av den härledda klassen. Det finns många sätt att uppnå arv single, multiple, hierarchical, multilevel, hybrid. Vårt huvudämne för diskussion är skillnaden mellan singel och flera arv. I enskilt arv har vi bara en basklass som är ärvd av endast en avledad klass. I flera arv har vi mer än två basklasser som kombineras arvet av endast en avledad klass.


Jämförelsediagram

Grunder för jämförelseSingle ArvMultipla arv
GrundläggandeAvledad klass ärver en enda basklass.Avledad klass ärver två eller mer än två basklass.
GenomförandeKlass derived_class: access_specifier basklassKlass härledd _class: access_specifier base_class1, access_specifier base_class2, ....
Tillgång
Avledad klass tillgång till funktionerna i enstaka klassAvledad klass tillgång till de kombinerade egenskaperna hos ärftliga basklasser
SynlighetOffentlig, Privat, SkyddadOffentlig, Privat, Skyddad
KörtidKräver liten mängd körtid över huvudetKräver ytterligare runtime-kostnader jämfört med enskilt arv

Definition av enstaka arv

I enstaka arv finns en enda basklass och en enda härledd klass. Avledad klass ärver basklassen antingen offentligt, skyddat och privat. Medlemmarna av basklassen kan nås av avledad klass enligt den specifika åtkomstspecifika som anges under arv av basklassen.

Låt oss ha ett verkligt exempel som vi har två klasser, en "kontoklass" och en "sparande kontoklass". Här kan "sparande kontoklass" arva funktionen av "kontoklass", så klassen "kontoklass" blir bas / super / förälderklass för att spara kontoklassen och "spara kontoklass" kommer att vara en härledd klass.

Här är "konto klassens" attribut acc_no (privat) och balans (allmän), och medlemsfunktionerna initialiseras (), get_accno () som är offentliga. Nu, "kontoklass" blir ärvt att "spara konto klass" offentligt, så kan alla offentliga medlemmar i "konto klass" direkt nås genom att "spara konto klass". Den kan få tillgång till den privata medlemmen av "konto klass" genom offentliga medlemsfunktioner av "konto klass" men kan inte få tillgång till dem direkt.

Genomförande av enstaka arv:

 # inkludera användningsnamn space std; klasskonto {int acc_no, ; allmänhet: flytbalans void initiera (int x, int y) {acc_no = x; balans = y; } int get_accno. () {return acc_no; }}; klass Saving_acc: offentligt konto {float intrest_rate; allmän: // konstruktör av Saving_acc klass Saving_acc (int c) {interest_rate = c; } tomrumsvisning () {cout < 

Definition av flera arv

Multiple arv tillåter härledd klass att erva kombinerade funktioner i mer än en basklass, dvs vi har enstaka klass och flera basklasser. Varje basklass måste vara ärvt genom att ange separat åtkomstspecifikator för var och en av dem. En härledd klass kan nå medlemmarna i basklasserna baserat på den accessspecifikator som basklassen är ärvd till.

Låt oss göra det enklare med exemplet vi har tre klasser, dvs cykel, bil och fordon. Nu, "Vehicle" kan ärva funktionerna i "Bike" samt "Car". Så, "Vehicle" blir avledad klass och "Bike" och "Car" blir basklassen. Nu är "Bike" och "Car" offentligt ärvda av "Vehicle", den kan nå alla offentliga medlemmar av "Bike" och "Car" men eftersom vi har en enhet Model_no skyddad i "Car" så privat till Bil men kan vara nås av "Vehicle".

Genomförande av flera arv:

 # inkludera användningsnamn std; klass cykel {int engine_cost; ; allmänhet: void set_engine_cost (int x) {engine_cost = x; }}; klassbil {skyddad: int Modell_no; allmänhet: void set_Model_no (int p) {Model_no = p; }}; klass Fordon: offentlig cykel, allmän bil {int no_of_wheels public: vehical (int w) {no_of_wheels = w; cout << "inga hjul" < 

Viktiga skillnader mellan enkel och flera arv

  1. Singelärvet är en avledad klass som har en enda basklass, medan den i flera arv har två eller fler än två basklasser, men enbart avledad klass.
  2. Flera arv är ganska förvirrande, eftersom här en enstammad klass arv två eller flera basklass. Om basklassen har ett attribut eller en funktion med samma namn än för härledd klass blir det svårt att identifiera vilken vilken basklass attribut eller funktion den är den måste härledas.
  3. Överliggande problem är mindre vid enskilt arv. Men vid multipelärvning åberopar objektkonstruktionen eller förstörelsen konstruktörerna och destruktorn hos förälderklassen i klasshierarkin som ökar överhuvudet.
  4. Singelärvet är mer mot specialisering. Medan många arv är mer mot generalisering.
  5. Eftersom enskilt arv har mindre kostnader har det mindre körtid jämfört med flera arv.

Slutsats

Erfarenhet gör programmerarens arbete enkelt som om en klass redan är formad, dess funktioner kan anpassas av andra om det behövs. Även om åtkomstspecifikationen begränsar tillgången till medlemmarna i en basklass på ett visst sätt, men det gör data säkrare. Enkelt ärv är på något sätt enklare och lättare att genomföra än flera arv. Arv reducerar storleken på objektkoden, men påverkar också programmets körtid.

Top