LECȚIA 18
|
PAG. 3 / 4
|
Acasă >>>
Lecții online

Redefinirea metodelor moștenite
Moștenirea nu înseamnă doar preluarea automată a metodelor unei clase părinte. În multe cazuri, comportamentul oferit de clasa de bază nu este suficient sau nu se potrivește exact contextului din subclasă. În aceste situații, avem nevoie să redefinim (sau să suprascriem) metoda moștenită, adaptând-o la nevoile subclasei.Acest mecanism poartă numele de override și este unul dintre cele mai importante instrumente pentru a construi ierarhii de clase flexibile și coerente. Dacă o metodă definită într-o subclasă poartă exact același nume ca una din clasa părinte, atunci metoda din subclasă o înlocuiește pe cea moștenită. La apel, se va executa varianta subclasei.
Pentru a exemplifica, vom defini o clasă de bază Vehicul, care are o metodă porneste(). Apoi vom crea o subclasă Masina, care redefinește această metodă pentru a personaliza comportamentul: Chiar dacă nu am schimbat nimic altceva în Masina, faptul că metoda porneste() este redefinită acolo face ca ea să înlocuiască complet versiunea moștenită.
Redefinirea metodei nu afectează deloc clasa de bază, bineînțeles. Vehicul continuă să se comporte la fel ca înainte. Modificările din Masina sunt izolate și afectează doar instanțele de acel tip. Acesta este un principiu esențial: modifici comportamentul doar acolo unde este necesar, fără să afectezi codul deja testat și folosit în altă parte.
Nu este necesar ca toate metodele să fie suprascrise – doar acelea al căror comportament nu mai are sens în forma moștenită.
EXERCIȚIU
Creează o clasă Animal cu metoda vorbeste(), care afișează "Sunet necunoscut...". Apoi, subclasele Caine, Pisica și Vaca, fiecare redefinind metoda vorbeste() cu sunetul corespunzător. La final, testează-le într-o buclă și observă diferența de comportament!
Avansează la pagina următoare.

home | list LECȚII | perm_identity | arrow_upward |