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

Introducere
În lumea reală, moștenirea este procesul prin care anumite caracteristici – fie fizice, fie comportamentale – se transmit de la o generație la alta. În programarea orientată pe obiecte, principiul este similar: o clasă nouă poate moșteni atribute și metode de la o clasă existentă, extinzându-i sau modificându-i comportamentul.Această capacitate de a construi tipuri de date complexe prin reutilizarea unor structuri deja definite reduce redundanța, îmbunătățește claritatea și permite extinderea sistemelor software fără a rescrie codul existent.
Moștenirea este mecanismul prin care o clasă (numită subclasă sau clasă derivată) preia comportamente și proprietăți de la o altă clasă (numită superclasă sau clasă de bază). Subclasa poate adăuga noi comportamente sau poate redefini metodele moștenite.
Acest proces este natural și logic. Dacă ai o clasă Vehicul, poți construi din ea clase precum Masina, Motocicleta sau Camion, fiecare moștenind comportamente comune (pornire, oprire, afișare date, etc.) și adăugând particularități specifice.
Atenție, moștenirea nu este doar un instrument de reutilizare a codului – este și un mijloc de a reflecta relații logice din lumea reală. Ori de câte ori poți spune că „un tip de obiect este un caz particular al altuia”, ai un candidat pentru moștenire.
Primele noțiuni
În limbajul Python, o subclasă se definește specificând clasa părinte între paranteze la definirea clasei:
class subclasa(clasa_părinte)
Am menționat anterior clasa Vehicul, pe care o descriem acum mai jos: Detalii. Obiectul m de tip Masina are acces la metoda porneste() chiar dacă aceasta a fost definită în clasa Vehicul. Asta pentru că Masina moștenește toate metodele publice ale clasei de bază.
Atributele se moștenesc la fel ca metodele
Tot ce este definit în clasa părinte – metode, variabile, constante – este moștenit în mod implicit. Inclusiv variabilele definite direct în clasă (nu doar în __init__) pot fi accesate:
class Animal:
tip = "necunoscut"
class Pisica(Animal):
pass
print(Pisica.tip) # necunoscut
Notă. Dacă în Pisica definești un nou tip, acesta îl va suprascrie pe cel moștenit. Aceasta este o formă de shadowing.
Poți verifica ierarhia unui obiect cu isinstance() și issubclass()
Python oferă funcții utile pentru a verifica relațiile de moștenire:- isinstance(obj, Clasa) verifică dacă obj este instanță a clasei sau a unei subclase.
- issubclass(A, B) verifică dacă A moștenește (direct sau indirect) din B
Avansează la pagina următoare.

home | list LECȚII | perm_identity | arrow_upward |