Minden, amit tudnia kell az öröklésről a C ++ nyelven



Ez a cikk részletes és átfogó ismereteket nyújt Önnek az öröklődésről a C ++ nyelven, különféle típusokról és megvalósításukról.

A C ++ egy objektum-orientált nyelv. Az adatok absztrakciója, a polimorfizmus, a beágyazás és az öröklődés az OOP sarokköve. Ebben a bejegyzésben megértjük, mi az öröklés? Az öröklés típusai a C ++ nyelven, és az összes szükséges fogalom a semmiből. Végül megvizsgáljuk ennek a hatalmas koncepciónak a hátrányait is, és megpróbáljuk megoldani.

Mi az öröklés a C ++ - ban

Az öröklés a C ++ vagy bármely más objektumorientált nyelv egyik legerősebb és legszélesebb körben használt fogalma. Ennek a koncepciónak a megértéséhez az osztályok és tárgyak kis ismerete szükséges. Az Öröklés használatával létrehozhatunk egy osztályt, amely általános módszerekből és attribútumokból áll. Ezt az osztályt más, specifikusabb módszereket tartalmazó osztályok is örökölhetik.





Öröklés C ++ - ban

Ezzel nem kell újra és újra ugyanazokat a funkciókat írni, ami időt takarít meg és növeli a kód olvashatóságát.



Szintaxis:

osztály származtatott osztály: hozzáférési_típus alap_osztály {// osztálytest}

Alaposztály: Az osztályt, amely az összes általános módszerből és attribútumból áll, amelyeket más osztályok megoszthatnak a kód olvashatóságának növelése érdekében, alaposztálynak nevezzük.

hogyan lehet tömböt készíteni

Származtatott osztály: A specifikusabb módszerekből álló és egy osztályt öröklő osztályt származtatott osztálynak nevezzük. A származtatott osztály valamilyen más származtatott osztály alaposztálya is lehet.



Ha létrehozunk egy XYZ osztályt, néhány attribútummal és módszerrel. Most egy osztály hallgatójának lesz néhány más attribútuma, de tartalmazni fogja az XYZ osztály elemeit is, és ugyanez vonatkozik a kari osztályra is. Lássunk egy diagramot:

Tehát a hallgató és a tanári osztály örökölni fogja az XYZ-t.

Hozzáférés specifikátor Megértettük, hogy egy osztály hogyan örökölheti egy másik osztályt. De egyesek azt mondhatják, hogy ez nem biztonságos módszer, mivel az alaposztály vagy a szülőosztály összes attribútumát és módszerét megosztják a gyermekosztályral vagy a származtatott osztállyal. Például, ha a „Bank” osztályt az „ügyfelek” és a „befektetők” osztály örökli. A „Bank” osztály attribútumai, például a „vaultpassword”, egyéb, az ügyfelekkel kapcsolatos információk és a magánadatok meg vannak osztva az „ügyfelek” és a „befektetők” osztályokkal, ami nem biztonságos.

A fenti probléma megoldására a C ++ hozzáférési specifikátorokkal korlátozza az alaposztály attribútumainak hozzáférését a származtatott osztályhoz. A C ++ nyelven összesen 3 típusú hozzáférési specifikáció létezik

  1. Nyilvános
  2. Magán
  3. Védett

Az alábbi táblázat jól átlátja, hogy a származtatott osztályok milyen típusú adatokhoz férhetnek hozzá a különböző hozzáférési specifikációk szerint.

Hozzáférés-specifikátor Nyilvános adatok Privát adatok Védett adatok
Magán Nem öröklődikNem öröklődikNem öröklődik
Védett Védett Magán Védett
Nyilvános Nyilvános Magán Védett

Egyetlen öröklés

Az egyszeri öröklés az öröklés sima vanília formájának tekinthető. Egyetlen öröklés esetén egyetlen osztály örököl egy alaposztálytól.

#include névtér használatával std osztály Vonat {int Kerékszámok int A buszok száma public: void Vonatinformáció (int n, int m) {Kerekek száma = n Coachache szám = m} void showinfo () {cout<Ezt az öröklési esetet többszintű öröklésnek nevezzük. Az első és az utolsó osztály közötti osztályt köztes alaposztálynak is nevezik.Mit gondolsz, az utolsó osztály örökölheti-e az első osztály tagjait? Igen, tud

#include névtér használatával std class First {védett: int a public: void getinfofirst (int x) {a = x} void showinfofirst () {std :: cout<< 'Value of a = ' < 

Kimenet:

A = 10 értéke

B értéke 20

C = 30 értéke

r használatával a gépi tanuláshoz

D értéke 50

Hierarchikus öröklés

Bizonyos problémákat nem lehet megoldani egyetlen vagy többszintű örökléssel. A hierarchikus öröklésben több mint 1 osztály örököl egyetlen alaposztályból.

#include névtér használatával std osztály Főiskola {public: Főiskola () {cout<< 'We are in class College' << endl } } class Student: public College { } class Faculty: public College { } int main() { Student student Faculty faculty return 0 }

Kimenet:

A Főiskolán vagyunk

A Főiskolán vagyunk

Többszörös öröklés C ++ formában

Láttuk a hierarchikus öröklődésben, hogy egy alaposztálynak több származtatott osztálya volt. Több öröklődés esetén egy származtatott osztálynak több alaposztálya van.

#include névtér használatával std class One {protected: int a public: void getinfoOne (int x) {a = x}} class 2 {protected: int b public: void getinfoTwo (int y) {b = y}} class Main: public One, public Two {public: void Display () {std :: cout<< 'Value of a = ' < Ezen a ponton jól megértjük a C ++ - ban használt összes öröklődést. De várjon, mi van, ha 2 különböző típusú öröklést akarunk használni? Lehetséges? Igen, a hibrid Öröklés segítségével lehetséges. A hibrid öröklésben 2 különböző típusú öröklést kombinálunk. Például: többszintű és többszörös öröklés, hierarchikus és többszörös öröklés stb.

#include névtér használatával std class World {védett: int a public: void getinfoWorld (int x) {a = x}} osztály Kontinens: public World {védett: int b public: void getinfoContinent (int y) {b = y}} osztály Ország {védett: int d public: void getinfoCountry (int m) {d = m}} osztály Ausztrália: public Continent, public Country {public: void Display () {std :: cout<< 'Value of a = ' < 

Értsük meg a fenti ábrát, amely segít megérteni a gyémánt problémát. A B és a C osztály örökli az A osztályt, így mind az A, mind a B osztály rendelkezik az A osztály attribútumaival és módszereivel, ha a D osztály a B és a C osztályból örököl, a D osztály a B és C osztály összes tulajdonságával rendelkezik A B osztályból, valamint a C osztályból is örökölte az A osztály összes attribútumát, ezért ha egy D osztály objektumot készítünk és A. osztályú metódust hívunk, akkor kétértelmű helyzet jön létre, és a fordító összetévesztésre kerül osztályának az A osztályúnak kell lennie, a B vagy a D osztályba.

java osztály példányadatai

A kétértelműség megoldására a virtuális alaposztály nevű fogalmat használjuk. Amikor virtuális alaposztályt készítünk alaposztályból, az osztálynak csak egy példánya öröklődik, függetlenül a virtuális alaposztály és a származtatott osztály közötti meglévő utak számától.

A osztály {} B osztály: virtuális nyilvános A {} C osztály: virtuális nyilvános A {} D osztály: nyilvános C, nyilvános D {}

Ezzel véget értünk ennek az öröklésnek a C ++ cikkben. Ha többet szeretne megtudni, nézze meg a Edureka, egy megbízható online tanulási társaság. Az Edureka Java J2EE és SOA képzési és tanúsítási tanfolyamát arra tervezték, hogy mind az alapvető, mind a fejlett Java koncepciókra kiképezzen különféle Java keretrendszereket, például a Hibernate & Spring.

Van egy kérdésünk? Kérjük, említse meg a blog megjegyzés rovatában, és a lehető leghamarabb kapcsolatba lépünk Önnel.