Moștenirea (programare)
De la SEO Wiki - Search Engine Optimization și Limbaje de Programare
Moștenirea - (., Împreună cu încapsulare și polimorfism de abstractizare), una dintre cele patru mecanisme mai importante orientate obiect de programare, care permite să descrie o nouă clasă pe baza unui existent (părinte), precum și proprietățile și funcționalitatea clasei părinte împrumutat o nouă clasă.
Cu alte cuvinte, clasa derivată implementează specificația unei clase existente (clasa de bază). Acest lucru permite să se ocupe de derivate obiecte de clasă în același mod ca și obiectele din clasa de bază [1].
tipuri de moștenire
moștenire simplă
Class. din care se moștenire, numită bază sau părinte (clasă de bază Eng.). Clasele care au avut loc de la bază, numit descendenți. Succesorii sau clase derivate (Engl. clasă derivată).
Unele limbi folosesc clase abstracte. O clasă abstractă - o clasă care conține cel puțin o metodă abstractă. este descrisă în program, acesta are un câmp. Tehnicile și nu pot fi folosite pentru a crea în mod direct obiectul. Aceasta este, din clasa abstractă poate moșteni numai. Obiectele sunt create numai pe baza claselor derivate moștenesc de la abstract. De exemplu, o clasă abstractă poate fi o clasă de bază „angajat universitate“, care sunt moștenite clase de „student absolvent“, „profesor“ și t. D. Deoarece clasele derivate au câmpuri și funcții comune (de exemplu, „data nașterii“ pe teren), acestea membrii clasei pot fi descrise în clasa de bază. Programul de obiecte sunt create pe baza unor clase „student absolvent“, „profesorul“, dar nu are nici un sens pentru a crea un obiect bazat pe clasa „angajat al universității.“
moștenire multiplă
Atunci când moștenire multiplă între clase pot fi mai mult de un părinte. În acest caz, clasa moștenește toate metodele strămoșilor lor. Avantajele acestei abordări pentru o mai mare flexibilitate. moștenire multiplă este implementat în C ++. Din alte limbi, oferă această capacitate, poate fi notat Python și Eiffel. moștenire multiplă este acceptată în limba UML.
Multiple moștenire - o sursă potențială de erori care pot apărea din cauza prezenței aceleași nume în metoda strămoșii. În limbi, care sunt poziționate ca mostenitorii C ++ (Java. C #, etc), moștenire multiplă a fost abandonată în favoarea interfețelor. Aproape întotdeauna este posibil să se evite utilizarea acestui mecanism. Cu toate acestea, în cazul în care nevoia este încă acolo, apoi, pentru a rezolva conflictele moștenite metode folosesc același nume, poate, de exemplu, să aplice extinderea funcționării vederii - „::“ - pentru a apela o metodă particulară a unui anumit părinte.
Încercarea de a rezolva problema de a avea același nume în strămoșii metode a fost făcută în limba Eifel. în care descrierea noii clase trebuie să fie importate în mod explicit să specifice membrii fiecăreia dintre clasele derivate și denumirea lor în clasa derivată.
Cele mai multe limbaje de programare moderne orientate-obiect (C #. Java. Delphi și altele.) Sprijină atât moștenită de la o clasă strămoș și să pună în aplicare metode de mai multe interfețe în aceeași clasă. Acest mecanism vă permite să înlocuiască în mare măsură moștenirea multiplă - metodele de interfețe necesare pentru a redefini în mod clar că elimină erorile în funcționalitatea moștenirea aceleași metode de diferite clase de strămoși.
Clasa de bază Single
In unele limbaje de programare, toate clasele moștenesc în mod explicit sau implicit la o anumită clasă de bază. Smalltalk a fost una dintre primele limbi care au folosit acest concept. Aceste limbi includ Java (Object), C # (System.Object), Delphi (TObject).
Moștenire în C ++
În C ++, există trei tipuri de moștenire: publice. protejat. privat. membrii clasei Specificatorii bază de acces sunt schimbate la descendenți după cum urmează:
- în timp ce public-moștenire a tuturor calificative rămân neschimbate.
- cu protejat de moștenire a tuturor calificative rămân neschimbate, cu excepția publicului de calificare, care variază în funcție de specificatorul protejate (de exemplu public-membri ai clasei de baza descendenților sunt protejate).
- atunci când privat-moștenire a tuturor de calificare sunt modificate în privat.
Unul dintre principalele avantaje ale moștenirii-publice este ca un pointer la o subclasă poate fi convertit în mod implicit la un pointer la o clasă de bază, care este, pentru exemplul de mai sus, puteți scrie:
Aceasta este o mare facilitate deschide posibilitatea unei identificări de tip dinamic (RTTI).