moștenirea în programare orientat obiect este un mod de organizare a obiectelor într-o ierarhie de la cel mai general la cel mai specific. Este gadgetul folosit pentru a extinde o clasă într-o altă clasă, păstrând o execuție analogă.
În majoritatea limbajelor orientate pe obiecte bazate pe clase, un obiect creat prin moștenire, numit obiect copil, primește toate proprietățile și comportamentele obiectului părinte..
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 nevoi specifice.
Moștenirea poate ajuta la reprezentarea obiectelor care au unele diferențe și unele asemănări în modul lor de lucru. Puteți pune toate funcționalitățile pe care obiectele le au în comun într-o clasă de bază și apoi să definiți una sau mai multe subclase cu propria funcționalitate personalizată.
Indice articol
Moștenirea este una dintre caracteristicile cheie ale programării orientate pe obiecte, care este utilizată pentru a defini o nouă clasă din clasele existente.
Adică, noi clase pot fi derivate din clasele de bază existente, adăugând noi caracteristici. Nu trebuie să scrieți 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ă care suprascrie parțial o parte din comportamentul său sau poate că se adaugă o funcționalitate nouă..
O clasă derivată moștenește toate metodele clasei de bază, cu excepția următoarelor:
- Constructori, destructori și constructori de copii din clasa de bază.
- Clase de bază operatorii supraîncărcați.
- Funcții prietenoase din clasa de bază.
La fel ca un arbore genealogic, moștenirea servește la formarea unei ierarhii de clase. Este important de reținut 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 din care moștenește. Pe de altă parte, această clasă va fi superclasa ta. Cea mai generică clasă poate fi denumită o clasă de bază, deoarece se află la baza ierarhiei.
Moștenirea este foarte populară în unele limbi cu tipuri statice, deoarece permite programatorului să evite unele dintre restricțiile tipului 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 dintre ele 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 instructorului și studentului, deoarece ambii sunt moștenitori ai persoanei.
Când o clasă derivată moștenește proprietățile și comportamentul unei singure clase de bază. Adică, o clasă se extinde la o altă clasă.
Se referă la obiectul gadget în care puteți moșteni dintr-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ă.
În această moștenire, multe subclase moștenesc dintr-o singură clasă. Adică, se întâmplă atunci când o singură clasă de bază este moștenită de mai multe clase derivate.
Este moștenirea rezultată atunci când oricare dintre cele trei moșteniri anterioare sunt combinate (unic, ierarhic și multinivel).
Corespunde cifrei de moștenire atunci când o clasă moștenește de la mai multe superclase. Dezavantajul acestui tip de moștenire este că clasa derivată va trebui să se ocupe de dependența pe care o are față de două clase de bază.
Pe de altă parte, acest tip de moștenire permite programatorilor să ridice clase care combină aspectele mai multor clase și ierarhiile lor corespunzătoare..
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 niciodată accesibile direct dintr-o clasă derivată, dar pot fi accesați prin apeluri făcute către membrii publici și protejați ai clasei de bază..
Când creați o clasă care moștenește dintr-o superclasă protejată, atât membrii publici, cât și membrii protejați ai acestei superclase vor deveni membri protejați ai clasei derivate.
La subclasarea dintr-o superclasă privată, membrii publici și protejați ai acestei superclase vor deveni membri privați ai subclasei.
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, o clasă numită RobotMédico (PhysicianRobot), care este derivat din superclasa Robot.
Dacă vă uitați la codul clasei RobotMédico, puteți vedea că nu a fost definit nici un atribut sau metodă în această clasă.
Deoarece clasa RobotMedico este o subclasă a robotului, 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 se creează o instanță a RobotMédico, funcția __init__ va crea și un atribut de nume. Metoda say_hi poate fi aplicată obiectului „y” al RobotMédico, așa cum se poate vedea în rezultatul codului anterior.
O clasă poate moșteni din mai multe clase, ceea ce înseamnă că poate moșteni date și funcții din mai multe superclase. Pentru a defini o clasă derivată, se utilizează o listă de derivare a clasei pentru a specifica clasele de bază.
O listă de derivare a claselor din C ++ numește una sau mai multe clase de bază și are următoarea formă: clasă derivat-clasa: specificator de acces clasa de bază, in care specificator de acces este public, protejat sau privat, Da clasa de bază este numele unei clase definite anterior. Dacă nu este utilizat specificator de acces, Este luat privat Mod implicit.
Vă puteți gândi la superclasa „Shape” și la clasa sa derivată „Rectangle” după cum urmează:
Când codul de mai sus este compilat și executat, apare următoarea ieșire: "Suprafață totală: 35".
Nimeni nu a comentat acest articol încă.