Ajánlott, 2024

Szerkesztő Választása

Az egyszeri és többszörös öröklés közötti különbség

Az öröklés határozottan támogatja az újrafelhasználhatóság fogalmát, azaz az újonnan létrehozott osztály újrahasználja a már meglévő tulajdonságait. Az Access specifikáló határozza meg, hogy az alaposztály tagja hogyan fog örökölni a származtatott osztályt. Az öröklés egyetlen, többszörös, hierarchikus, többszintű, hibrid elérésének számos módja van. Míg a fő témánk az egy- és többszörös öröklés közötti különbség. Egyetlen öröklés esetén csak egy alaposztályunk van, amelyet csak egy származtatott osztály örököl. Többszörös öröklésünkben több mint két alaposztályunk van, amelyeket csak egy származtatott osztály örököl.


Összehasonlító táblázat

Az összehasonlítás alapjaEgyedülálló öröklésTöbbszörös öröklés
AlapvetőA származtatott osztály egyetlen alaposztályt örököl.A származtatott osztály két vagy több bázisosztályt örököl.
VégrehajtásOsztály-származtatott osztály: access_specifier alaposztályOsztályalapú _class: access_specifier base_class1, access_specifier base_class2, ....
Hozzáférés
A származtatott osztály hozzáférést biztosít az egyetlen bázis osztály jellemzőihezA származtatott osztály az öröklött alaposztályok kombinált jellemzőit érheti el
LáthatóságNyilvános, magán, védettNyilvános, magán, védett
Futtatási időKis mennyiségű futási idő szükséges a fej fölöttSzükség van további futásidejű fölött, mint az egyetlen öröklés

Az egységes öröklés meghatározása

Egyetlen öröklés esetén egyetlen alaposztály és egyetlen származtatott osztály van. A származtatott osztály az alaposztályt nyilvánosan, védetten és magántulajdonban örökli. Az alaposztály tagjai az alaposztály öröklése során megadott hozzáférési specifikációnak megfelelően származtatott osztály alapján érhetők el.

Van egy valós életmódunk, két osztályunk, egy „számlaosztály” és egy „megtakarítási számlaosztály”. Itt a „számlaosztály-megtakarítás” örökölheti a „számlaosztály” jellemzőjét, így a „számlaosztály” osztály a számlaosztály megtakarításáért alap- / szuper / szülő osztály lesz, és a „számlaosztály megtakarítása” származékos osztály lesz.

Itt a „fiókosztály” attribútumai acc_no (privát) és az egyensúly (nyilvános), és a tagfunkciók inicializálódnak (), get_accno (), amelyek nyilvánosak. Most, a „számlaosztály” a „megtakarítási számlaosztályra” öröklődik, így a „számlaosztály” valamennyi nyilvános tagja közvetlenül hozzáférhető a „megtakarítási számlaosztály” -hoz. Hozzáférhet a „számlaosztály” privát tagjához a „számlaosztály” nyilvános tagfüggvényein keresztül, de közvetlenül nem fér hozzá.

Egyedülálló öröklés végrehajtása:

 # tartalmazza a std névtér használatát; class Account {int acc_no, ; nyilvános: úszó egyenleg; érvénytelen inicializálás (int x, int y) {acc_no = x; egyenleg = y; } int get_accno. () {return acc_no; }}; class Saving_acc: public Account {float intrest_rate; nyilvános: // Saving_acc osztály megalkotója Saving_acc (int c) {interest_rate = c; } void display () {cout < 

Többszörös öröklés meghatározása

A többszörös öröklés lehetővé teszi a származtatott osztálynak, hogy egynél több bázisosztály kombinált tulajdonságait örökölje, azaz egyetlen származtatott osztály és több bázisosztály van. Minden bázisosztályt örökölni kell, ha meg kell említeni a külön hozzáférési specifikátort mindegyikük számára. Egy származtatott osztály hozzáférhet a bázisosztály tagjai számára a hozzáférési specifikáció alapján, amellyel az alaposztály öröklődik.

Lehetővé teszi, hogy megkönnyítsük a példát, három osztályunk van, azaz kerékpár, autó és jármű. Most a „Jármű” örökölheti a „Kerékpár” és az „Autó” jellemzőit. Tehát a „Jármű” származtatott osztály lesz, és a „Bike” és az „Autó” lesz az alaposztály. Most a „Bike” és a „Car” a „Jármű” által örökölte, és a „Bike” és az „Autó” összes nyilvános tagjához férhet hozzá, de mint van egy Model_no entitásunk, melyet „Car” -ként védett, így privát autónak, de lehet, hogy a „Jármű”.

Többszörös öröklés végrehajtása:

 # tartalmazza a névtér std használatát; osztály Bike {int engine_cost; ; nyilvános: void set_engine_cost (int x) {engine_cost = x; }}; osztályú autó {védett: int Model_no; nyilvános: void set_Model_no (int p) {Model_no = p; }}; osztály Jármű: nyilvános kerékpár, nyilvános autó {int no_of_wheels nyilvános: jármű (int w) {no_of_wheels = w; cout << "kerekek nélkül" < 

Az egyszeri és többszörös öröklés közötti különbségek

  1. Az egyetlen öröklés az egyik származtatott osztály, amelynek egyetlen bázisosztálya van, míg többszörös öröklésben két vagy több bázisosztály van, de egyetlen származtatott osztály.
  2. A többszörös öröklés meglehetősen zavaros, mivel itt egyetlen származtatott osztály örököl két vagy több alaposztályt. Ha az alaposztályok egy attribútummal vagy funkcióval rendelkeznek, mint a származtatott osztályra, akkor nehéz lesz azonosítani, hogy melyik alaposztály attribútuma vagy funkciója származzon.
  3. Az általános öröklés esetén az általános költségek kisebbek. Többszörös öröklés esetén azonban az objektum felépítése vagy megsemmisítése az osztályhierarchiában a szülő osztály építőit és megsemmisítőit idézi fel, ami növeli a felső értéket.
  4. Az egyetlen örökség inkább a specializáció felé vezet. Míg a többszörös öröklés inkább az általánosítás irányába mutat.
  5. Mivel az egyszeri öröklésnek kevesebb általánossága van, kevesebb futási ideje van a többszörös örökléshez képest.

Következtetés

Az öröklés megkönnyíti a programozó munkáját, mivel ha egy osztály már kialakult, akkor a funkciókat szükség esetén más is alkalmazhatja. Bár a hozzáférési specifikátor bizonyos módon korlátozza a hozzáférést az alaposztály tagjai számára, de biztonságosabbá teszi az adatokat. Az egyszeri öröklés valamivel egyszerűbb és egyszerűbb, mint a többszörös öröklés. Az öröklés csökkenti az objektumkód méretét, de befolyásolja a program futási idejét is.

Top