Ce este moștenirea, superclasa și subclasa în Java?

Un concept important în programarea orientată pe obiect este moștenirea. Oferă o modalitate de obiecte pentru a defini 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 de la 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.

Un exemplu de moștenire Java

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.

instagram viewer

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.

Ce este o Superclasa?

Î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 pot 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 sa 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 televizor.

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 un domeniu de studiu și o instituție de învățare.

Exemplu de superclasa:

Imaginați-vă că definiți o clasă de persoană:

clasa publică Persoană. { }

O nouă clasă poate fi creată prin extinderea acestei clase:

clasa publică Angajatul extinde Persoana. { }

Se spune că clasa Persoana este superclasa clasei angajați.

Ce este o subclasă?

În relația dintre două obiecte, o subclasă este denumirea dată clasei care moștenește de la superclasă. Deși sună puțin drabber, nu uitați că este o versiune mai specializată a superclasei.

În exemplul precedent, Studentul și Muncitorul sunt subclase.

Subclasele pot fi cunoscute și ca clase derivate, clase pentru copii sau clase extinse.

Câte subclase pot avea?

Puteți avea câte subclase doriți. Nu există nicio limitare la câte subclase poate avea o superclasă. De asemenea, nu există o limitare a numărului de niveluri de moștenire. O ierarhie de clase poate fi construită pe un anumit domeniu al comunității.

De fapt, dacă vă uitați la bibliotecile API Java, veți vedea multe exemple de moștenire. Fiecare clasă din API-urile este moștenită de la o clasă numită java.lang. Obiect. De exemplu, de fiecare dată când utilizați un obiect JFrame, vă aflați la sfârșitul unei linii lungi de moștenire:

 java.lang. Obiect. extins de java.awt. Componenta. extins de java.awt. Container. extins de java.awt. Fereastră. extins de java.awt. Cadru. extins prin javax.swing. JFrame. 

În Java, când o subclasă moștenește de la o superclasă, este cunoscută ca „extinderea” superclasei.

Subclasa mea poate moșteni de la multe superclase?

Nu. În Java, o subclasă poate extinde doar o superclasă.

De ce să folosești moștenirea?

Moștenirea permite programatorilor să refolosească codul pe care l-au scris deja. În exemplul clasei umane, nu este necesar să creăm câmpuri noi în clasa Bărbat și Femeie pentru a reține tipul de sânge, deoarece îl putem folosi pe cel moștenit din clasa Uman.

Un alt beneficiu al folosirii moștenirii este că ne permite să tratăm o subclasă ca și cum ar fi o superclasă. De exemplu, să zicem că un program a creat mai multe instanțe ale obiectelor Bărbat și Femeie. Programul ar putea avea nevoie să apeleze la comportamentul de somn pentru toate aceste obiecte. Deoarece comportamentul de somn este un comportament al superclasei umane, putem grupa toate obiectele bărbatului și femeii împreună și a le trata ca și cum ar fi obiecte umane.