Fiecare clasă derivata moștenește câmpurile și metodele superclasei. Aceasta înseamnă că toate câmpurile și metodele existente în superclasă sunt utilizabile și în subclasă, dar în aceasta din urmă pot exista, de asemenea, câmpuri și/sau metode suplimentare.
Polimorfismul este o alta proprietate fundamentală a claselor.
În limbajul Java este posibil ca o metodă a superclasei să fie
redefinită în subclasă. Aceasta înseamnă că ea va avea în subclasă
același nume și aceeasi lista de parametri și același tip de valoare
întoarsă ca în superclasă, dar va avea un comportament diferit.
Să considerăm, de exemplu, că exista clasa Poligon, în care există metoda double arie(). Aceasta metodă este o funcție, a cărei valoare este aria poligonului. Sa considerăm acum că Triunghi și Patrat sunt doua clase derivate din clasa Poligon. În ambele clase derivate va exista metoda double arie(), dar este evident că modul de calcul al ariei triunghiului diferă de cel al calculării ariei patratului și, cu atât mai mult, de modul de calcul al ariei unui poligon oarecare. |
Vom arata ulterior că lipsa moștenirii multiple este compensată în Java prin faptul că fiecare clasa poate avea mai multe interfețe.
De exemplu, având în vedere că clasa String
este derivată din clasa Object, urmatoarele instrucțiuni sunt
corecte:
Object ob; În primele două instrucțiuni, s-au declarat
variabilele-referință ob din clasa Object și s
din clasa String, ultima fiind inițializată cu o referință
către șirul "abcd", care a fost creat folosind operatorul new.
În a treia instrucțiune, variabilei-referință ob i se atribuie
valoarea variabilei-referință s. În consecință, acum variabila ob
din clasa Object are ca valoare o referința către obiectul "abcd"
din clasa String. |