- Caracteristicile moștenirii
- Ierarhie
- polimorfismul
- Tipuri de moștenire
- Moștenire unică
- Moștenire pe mai multe niveluri
- Moștenire ierarhică
- Moștenire hibridă
- Moștenire multiplă
- Tipuri de moștenire de la o clasă de bază
- Moștenire publică
- Moștenire protejată
- Moștenire privată
- Exemple
- Exemplu Python
- Exemplu în C ++
- Referințe
Moștenire în obiect - programarea orientată este o modalitate de a organiza obiectele într - o ierarhie de la general la specific. Este gadgetul folosit pentru extinderea unei clase într-o altă clasă, păstrând o execuție analogă.
În majoritatea limbajelor orientate pe obiecte bazate pe clasă, un obiect creat prin moștenire, numit obiect copil, capătă toate proprietățile și comportamentele obiectului părinte.

Dovadă simplă a moștenirii în orientarea obiectului. Sursa: Pluke / CC0 Creative Commons CC0 1.0 Domeniu public universal
Prin urmare, este o calitate care reprezintă relația dintre diferite clase. Moștenirea permite unei clase să aibă același comportament ca o altă clasă și să extindă sau să adapteze acel comportament pentru a oferi o acțiune specială pentru nevoile specifice.
Moștenirea poate ajuta la reprezentarea obiectelor care au unele diferențe și unele asemănări în modul de funcționare. Puteți pune toate funcționalitățile pe care obiectele le au în comun într-o clasă de bază, apoi puteți defini una sau mai multe subclase cu propria funcționalitate personalizată.
Caracteristicile moștenirii
Moștenirea este una dintre caracteristicile cheie ale programării orientate pe obiecte, folosită pentru a defini o clasă nouă din clasele existente.
Adică, noi clase pot fi derivate din clasele de bază existente, adăugând noi funcții. Nu trebuie să scrii de la zero. Prin urmare, moștenirea oferă o modalitate de a reutiliza cu ușurință codul existent.
Dacă aveți deja o clasă care face aproape tot ce doriți, puteți crea o subclasă în care o parte din comportamentul acesteia este parțial depășită sau poate să fie adăugată o nouă funcționalitate.
O clasă derivată moștenește toate metodele clasei de bază, cu excepția următoarelor:
- Constructori, distrugători și constructori de copie din clasa de bază.
- Operatorii supraîncărcați din clasa de bază.
- Funcții prietenoase pentru clasa de bază.
Ierarhie
Așa cum face un arbore genealogic, moștenirea servește pentru a forma o ierarhie de clase. Este important de menționat că atributele determinate pentru o clasă de bază vor fi prezente automat în clasa derivată. De asemenea, metodele pentru clasa de bază vor funcționa pentru derivate.
Se spune că o clasă este o subclasă a clasei de la care moștenește. Pe de altă parte, această clasă va fi superclasa ta. Clasa cea mai generică poate fi denumită clasa de bază, deoarece este la baza ierarhiei.
polimorfismul
Moștenirea este foarte populară în unele limbi cu tipuri statice, deoarece permite programatorului să evite unele dintre restricțiile de tip static.
Un obiect care moștenește de la un alt obiect este considerat un subtip al acelui obiect. Un exemplu ar putea fi obiectele „instructor” și „student”, fiecare moștenind de la „persoană”.
Dacă instructorul și studentul sunt de același tip de persoană, puteți scrie o funcție care acceptă tipul de persoană ca parametru și care funcționează pe obiectele de instructor și student, deoarece ambele sunt moștenitoare ale persoanei.
Tipuri de moștenire
Moștenire unică
Când o clasă derivată moștenește proprietățile și comportamentul unei clase de bază unice. Adică o clasă se extinde doar la o altă clasă.
Moștenire pe mai multe niveluri
Se referă la gadgetul unde puteți moșteni de la o clasă derivată, făcând din această clasă derivată clasa de bază pentru o nouă clasă. Adică rezultă atunci când o clasă derivată este creată dintr-o altă clasă derivată.
Moștenire ierarhică
În această moștenire, multe subclase moștenesc de la o singură clasă. Adică se întâmplă atunci când o singură clasă de bază este moștenită de mai multe clase derivate.
Moștenire hibridă
Este moștenirea rezultată atunci când oricare dintre cele trei moșteniri anterioare sunt combinate (unice, ierarhice și mai multe niveluri).
Moștenire multiplă
Corespunde cifrei de moștenire atunci când o clasă moștenește de la mai multe superclase. Dezavantajul cu acest tip de moștenire este că clasa derivată va trebui să se ocupe de dependența pe care o are de două clase de bază.
Pe de altă parte, acest tip de moștenire permite programatorilor să construiască clase care să combine aspectele mai multor clase și ierarhiile corespunzătoare ale acestora.
Tipuri de moștenire de la o clasă de bază
Moștenire publică
Când o clasă este derivată dintr-o clasă de bază publică, membrii publici ai clasei de bază devin membri publici ai clasei derivate, iar membrii protejați ai clasei de bază devin membri protejați ai clasei derivate.
Membrii privați ai unei superclase nu vor fi accesați direct dintr-o clasă derivată, ci pot fi accesați prin apeluri către publicul și membrii protejați ai clasei de bază.
Moștenire protejată
Când se creează o clasă care moștenește de la o superclasă protejată, atât membrii publici, cât și cei protejați ai acestei superclase vor deveni membri protejați ai clasei derivate.
Moștenire privată
Când o subclasă este creată dintr-o superclasă privată, membrii publici și protejați ai acestei superclase vor deveni membri privați ai subclasei.
Exemple
Exemplu Python
Pentru a arăta cum funcționează principiul moștenirii, vom lua roboți sau o clasă mai bună de roboți în limbajul de programare Python. Pentru a face acest lucru, va fi specificată o clasă numită RobotMédico (PhysicianRobot), care este derivată din superclasa Robot.

Dacă priviți codul clasei RobotMédico, puteți vedea că nu a fost definit niciun atribut sau metodă în această clasă.
Întrucât clasa RobotMedico este o subclasă a lui Robot, moștenește atât metodele __init__ cât și say_hi în acest caz. Moștenirea acestor metode înseamnă că pot fi utilizate ca și cum ar fi fost definite în clasa RobotMédico.
Când este creată o instanță a RobotMedico, funcția __init__ va crea, de asemenea, un atribut nume. Metoda say_hi poate fi aplicată obiectului „y” al RobotMédico, așa cum se poate observa în rezultatul codului anterior.
Exemplu în C ++
O clasă poate moșteni de la mai multe clase, ceea ce înseamnă că poate moșteni date și funcții de la mai multe superclase. Pentru a defini o clasă derivată, utilizați o listă de derivare de clase pentru a specifica clasele de bază.
O listă de derivare de clase din C ++ numește una sau mai multe clase de bază și are următoarea formă: clasă derivată-clasă: acces-specificier-clasă de bază, unde access-specificier este public, protejat sau privat, iar clasa de bază este numele unei clase definite anterior. Dacă nu este utilizat specificatorul de acces, în mod implicit, privat este luat.
Superclasa „Formă” și clasa sa derivată „Rectangle” pot fi considerate astfel:

Când codul de mai sus este compilat și executat, apare următoarea ieșire: "Suprafață totală: 35".
Referințe
- Dave Braunschweig (2020). Moștenire și polimorfism. Comunitatea Rebus. Luat de la: press.rebus.community.
- Curs Python (2020). Moştenire. Luat de la: python-course.eu.
- Mentor de date (2020). R Moștenire. Luat de la: datamentor.io.
- Puncte tutoriale (2020). C ++ Moștenire. Luat de la: tutorialspoint.com.
- Informații nete (2020). Diferite tipuri de moștenire. Luat de la: net-informations.com.
