
Összehasonlító táblázat
Az összehasonlítás alapja | Egyedülálló öröklés | Tö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ás | Osztály-származtatott osztály: access_specifier alaposztály | Osztá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őihez | A származtatott osztály az öröklött alaposztályok kombinált jellemzőit érheti el |
Láthatóság | Nyilvános, magán, védett | Nyilvános, magán, védett |
Futtatási idő | Kis mennyiségű futási idő szükséges a fej fölött | Szü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
- 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.
- 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.
- 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.
- 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.
- 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.