Un concept important în programarea orientată pe obiect este moștenirea. Oferă o modalitate pentru ca obiectele să definească relațiile între ele. După cum sugerează și numele, un obiect este capabil să moștenească caracteristici de la un alt obiect.
În termeni mai concreți, un obiect este capabil să transmită copiilor săi starea și comportamentele sale. Pentru ca moștenirea să funcționeze, obiectele trebuie să aibă caracteristici în comun între ele.
În Java, clasele pot fi preluate din alte clase, care pot fi preluate de la altele, etc. Acest lucru se datorează faptului că pot moșteni caracteristici din clasa de deasupra ei, până la cea mai de sus clasă de obiecte.
Să zicem că facem o clasă numită Om care reprezintă caracteristicile noastre fizice. Este o clasă generică care te-ar putea reprezenta pe tine, pe mine sau pe oricine din lume. Starea sa ține evidența lucrurilor precum numărul picioarelor, numărul brațelor și tipul de sânge. Are comportamente precum mânca, dorm și mersul.
Omul este bun pentru a înțelege ceea ce ne face toți la fel, dar nu poate, de exemplu, să-mi spună despre diferențele de gen. Pentru asta, va trebui să facem două tipuri noi de clasă, numite Bărbat și Femeie. Starea și comportamentele acestor două clase vor diferi unele de altele în multe moduri, cu excepția celor pe care le moștenesc de la Om.
Prin urmare, moștenirea ne permite să înglobăm starea și comportamentele clasei părintești în copilul său. Clasa pentru copii poate apoi extinde starea și comportamentele pentru a reflecta diferențele pe care le reprezintă. Cel mai important aspect al acestui concept de reținut este faptul că clasa copil este o versiune mai specializată a părintelui.
În relația dintre două obiecte, o superclasă este numele dat clasei care este moștenită. Sună ca o clasă super duper, dar nu uitați că este versiunea mai generică. Numele mai bune de utilizat ar putea fi clasa de bază sau pur și simplu clasa părinte.
Pentru a lua un exemplu mai real de această dată, am putea avea o superclasă numită Persoană. Starea ei deține numele, adresa, înălțimea și greutatea persoanei și are comportamente precum merge la cumpărături, face patul și se uită la TV.
Am putea face două clase noi care moștenesc de la o persoană numită Student și Muncitor. Sunt versiuni mai specializate, deoarece, deși au nume, adrese, se uită la televizor și merg la cumpărături, au și caracteristici diferite între ele.
Muncitorul ar putea avea un stat care deține un titlu și un loc de muncă în timp ce elevul ar putea deține date despre o zonă de studiu și o instituție de învățare.
Imaginați-vă că definiți o clasă de persoană:
public class Persoană
O nouă clasă poate fi creată prin extinderea acestei clase:
public class Angajat extinde Persoana
Se spune că clasa Persoana este superclasa clasei angajați.