Python 3
Machine Learning

PENTRU ELEVII DE LICEU

LECȚIA 18
PAG. 3 / 4
OOP - Moștenirea
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:
Editor - exemplu_oop.py
       
Rezultatul în consolă done
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