Priporočena, 2022

Izbira Urednika

Razlika med posameznim in večkratnim dedovanjem

Dedovanje močno podpira koncept ponovne uporabnosti, tj. Novonastali razred ponovno uporablja lastnosti že obstoječih. Specifikator dostopa odloči, kako bo član osnovnega razreda podedoval izpeljani razred. Obstaja veliko načinov za doseganje dedovanja enojni, večkratni, hierarhični, večnivojski, hibridni. Medtem ko je naša glavna tema razprave razlika med posamičnim in večkratnim dedovanjem. V enojni dediščini imamo samo en osnovni razred, ki ga podeduje samo en izpeljani razred. V večkratnem podedovanju imamo več kot dva osnovna razreda, ki sta kombinirana podedovana le z enim izpeljanim razredom.


Primerjalna tabela

Podlaga za primerjavoPosamezno dedovanjeVečkratno dedovanje
OsnovnoIzpeljani razred podeduje en osnovni razred.Izpeljani razred deduje dva ali več osnovnih razredov.
IzvajanjeRazred izpeljan_klasa: dostopni_obvezni osnovni razredRazred izpeljan _class: access_specifier base_class1, access_specifier base_class2, ....
Dostop
Izpeljani razred dostopa do funkcij posameznega osnovnega razredaIzpeljani dostop do razreda združuje značilnosti podedovanih osnovnih razredov
VidnostJavna, zasebna, zaščitenaJavna, zasebna, zaščitena
Čas izvajanjaZahtevajte majhno količino časa delovanja nad glavoZahtevajte dodatne stroške izvajanja v primerjavi z enim samim dedovanjem

Opredelitev enotnega dedovanja

Pri enotnem dedovanju obstaja en osnovni razred in en izpeljani razred. Izpeljani razred podeduje osnovni razred bodisi javno, zaščiteno in zasebno. Do članov osnovnega razreda lahko dostopa izpeljani razred glede na specifikacijo dostopa, podano med podedovanjem osnovnega razreda.

Vzemimo primer realnega življenja. Imamo dva razreda, razred »račun« in »razred varčevalnega računa«. Tukaj lahko »shrani razred računa« podeduje funkcijo »razreda računov«, tako da bo razred »računski razred« postal osnovni / nadrejeni / nadrejeni razred za shranjevanje razredov računov, »varčevalni razred« pa bo izpeljan razred.

Tukaj so atributi "account class's" acc_no (private) in balance (public), funkcije člana so initialize (), get_accno (), ki so javne. Zdaj se »računski razred« podeduje javno »varčevalnemu razredu«, tako da je vsem javnim članom »razrednega računa« mogoče neposredno dostopati s »varčevalnim razredom računa«. Dostop do zasebnega člana »računa razreda« lahko doseže prek javnih članskih funkcij »razreda računov«, vendar jim ne more neposredno dostopati.

Izvajanje enotnega dedovanja:

 # vključuje uporabo imena prostora std; razred Račun {int acc_no, ; javno: float bilanca; void inicializira (int x, int y) {acc_no = x; bilanca = y; } int get_accno. () {return acc_no; }}; razred Saving_acc: javni račun {float intrest_rate; public: // konstruktor razreda Saving_acc Saving_acc (int c) {interest_rate = c; } void display () {cout < 

Opredelitev več dedovanja

Večkratno dedovanje omogoča, da izpeljani razred podeduje kombinirane funkcije več kot enega osnovnega razreda, kar pomeni, da imamo en sam izpeljan razred in več osnovnih razredov. Vsak osnovni razred mora biti podedovan tako, da se za vsakega od njih navede poseben specifikator dostopa. Izvedeni razred lahko dostopa do članov osnovnih razredov, ki temeljijo na specifikatorju dostopa, po katerem je osnovni razred podedovan.

Omogočimo, da vam olajšamo primer, če imamo tri razrede: kolo, avto in vozilo. Zdaj lahko »Vozilo« podeduje tako »Bike« kot tudi »Car«. Tako »Vozilo« postane izpeljani razred, »Bike« in »Car« pa postane osnovni razred. Zdaj sta »Bike« in »Car« javno podedovana z »Vozilom«, saj lahko dostopa do vseh javnih članov »Bike« in »Car«, a ker imamo entiteto Model_no, zaščiteno v »Car«, je zasebna za Car, vendar je lahko dostopno z „Vozilom“.

Izvajanje več dedovanja:

 # vključuje uporabo imenskega prostora std; razred Bike {int engine_cost; ; public: void set_engine_cost (int x) {engine_cost = x; }}; razred Car {zaščiten: int Model_no; public: void set_Model_no (int p) {Model_no = p; }}; razred Vozilo: javno Kolo, javni avto {int no_of_wheels public: vehical (int w) {no_of_wheels = w; cout << "brez koles" < 

Ključne razlike med posamičnim in večkratnim dedovanjem

  1. Posamezno dedovanje je en izpeljani razred, ki ima en osnovni razred, medtem ko ima pri večkratnem dedovanju dva ali več kot dva osnovna razreda, vendar en sam izpeljan razred.
  2. Večkratno dedovanje je precej zmedeno, saj en sam izpeljani razred podeduje dva ali več osnovnih razredov. Če imajo osnovni razredi atribut ali funkcijo z istim imenom, potem za izpeljani razred postane težko ugotoviti, kateri atribut ali funkcija osnovnega razreda mora izhajati.
  3. Neželeni izdatki so manjši v primeru enega samega dedovanja. Toda v primeru večkratnega podedovanja konstrukcija ali uničenje objekta prikliče konstruktorje in destruktor nadrejenega razreda v hierarhiji razredov, ki poveča obremenitve.
  4. Enotno dedovanje je bolj v smeri specializacije. Medtem ko je večkratno dedovanje bolj usmerjeno na posploševanje.
  5. Ker ima posamezna dediščina manj obremenitev, ima manj časa v primerjavi z večkratnim dedovanjem.

Zaključek

Dedovanje olajšuje delo programerja, saj se lahko, če je že oblikovan, njegove lastnosti prilagodijo z drugimi, če je to potrebno. Čeprav specifikator dostopa omejuje dostop do članov osnovnega razreda na določen način, pa je zaradi tega podatki varnejši. Posamezno dedovanje je nekoliko enostavnejše in enostavnejše za izvajanje kot večkratno dedovanje. Dedovanje zmanjšuje velikost predmetne kode, vendar vpliva tudi na čas izvajanja programa.

Top