În această lecție, vom explora conceptul de ereditate în limbajul de programare Python. Vom discuta despre ce înseamnă ereditatea și cum să creăm și să utilizăm clase derivate.
Ce este ereditatea?
Ereditatea este un concept fundamental în programarea orientată pe obiect (OOP) și se referă la capacitatea unei clase de a moșteni atribute și metode de la o altă clasă. Ereditatea permite crearea de ierarhii de clase și reutilizarea codului, facilitând astfel dezvoltarea software-ului și îmbunătățind modularitatea și flexibilitatea acestuia.
În Python, ereditatea este implementată prin clase derivate și clase de bază. O clasă derivată (sau subclasă) moștenește atributele și metodele unei clase de bază (sau superclassă) și poate adăuga sau suprascrie funcționalități ale acesteia.
Crearea și utilizarea claselor derivate
Pentru a crea o clasă derivată în Python, pur și simplu specificăm între parantezele rotunde numele clasei de bază după numele clasei derivate, în definiția acesteia. Clasa derivată va moșteni atributele și metodele clasei de bază și le va putea utiliza sau modifica.
Iată un exemplu care demonstrează crearea unei clase derivate:
class Animal:
def __init__(self, nume, varsta):
self.nume = nume
self.varsta = varsta
def descriere(self):
return f"{self.nume} are {self.varsta} ani."
class Caine(Animal):
def __init__(self, nume, varsta, rasa):
super().__init__(nume, varsta)
self.rasa = rasa
def latra(self):
return f"{self.nume} latră: Ham ham!"
rex = Caine("Rex", 5, "Labrador")
print(rex.descriere()) # Output: Rex are 5 ani.
print(rex.latra()) # Output: Rex latră: Ham ham!
În acest exemplu, am creat o clasă Caine care derivă din clasa Animal. Clasa Caine moștenește atributele și metodele clasei Animal și adaugă un atribut rasa și o metodă latra(). Am folosit funcția super() pentru a apela constructorul clasei de bază (__init__() din Animal) și a inițializa atributele nume și varsta.
Suprascrierea metodelor
În unele cazuri, s-ar putea să vrem să modificăm comportamentul unei metode moștenite de la clasa de bază. Putem face acest lucru prin suprascrierea metodei în clasa derivată. Pentru a suprascrie o metodă, pur și simplu o redefinești în clasa derivată cu același nume.
Iată un exemplu care demonstrează suprascrierea unei metode:
class Animal:
def __init__(self, nume, varsta):
self.nume = nume
self.varsta = varsta
def descriere(self):
return f"{self.nume} are {self.varsta} ani."
class Caine(Animal):
def __init__(self, nume, varsta, rasa):
super().__init__(nume, varsta)
self.rasa = rasa
def descriere(self):
return f"{self.nume} este un {self.rasa} de {self.varsta} ani."
rex = Caine("Rex", 5, "Labrador")
print(rex.descriere()) # Output: Rex este un Labrador de 5 ani.
În acest exemplu, am suprascris metoda descriere() în clasa Caine pentru a adăuga informații despre rasa câinelui.
În concluzie, ereditatea este un concept esențial în OOP care permite crearea de ierarhii de clase și reutilizarea codului. În Python, ereditatea este implementată prin clase derivate și clase de bază. Prin înțelegerea conceptului de ereditate și aplicarea acestuia în dezvoltarea software-ului, poți crea programe mai robuste, scalabile și ușor de întreținut.