Moștenirea permite unei clase (subclasa sau child) să reutilizeze și să extindă câmpurile și metodele unei alte clase (superclasa sau parent). Ea modelează o relație is-a: un Dog este un .
Moștenirea permite unei clase (subclasa sau child) să reutilizeze și să extindă câmpurile și metodele unei alte clase (superclasa sau parent). Ea modelează o relație is-a: un Dog este un .
Animalclass Animal:
def __init__(self, name):
self.name = name
def eat(self):
return f"{self.name} is eating"
class Dog(Animal): # Dog inherits everything from Animal
def bark(self): # ...and adds new behavior
return "Woof!"
d = Dog("Rex")
print(d.eat()) # "Rex is eating" → inherited, not rewritten
print(d.bark()) # "Woof!" → Dog-specific
Dog a obținut __init__ și eat gratuit și a adăugat bark. O subclasă poate, de asemenea, suprascrisa metode moștenite pentru a schimba comportamentul.
| Beneficiu | Risc |
|---|---|
| Reutilizează codul partajat | Cuplare strânsă cu clasa părinte |
| Modelează ierarhii reale | Clasa de bază fragil — modificările în părintele rup copiii |
| Polimorfism printr-un tip comun | Copacii adânci devin greu de urmărit |
O linie directoare comună: favorizați compoziția în locul moștenirii atunci când relația este cu adevărat "has-a", nu "is-a".
Moștenirea este cea mai abuzată caracteristică OOP: este tentant s-o folosiți doar pentru a partaja cod, ceea ce cuplează clase neînrudite.
Folosită corect — doar pentru relații is-a genuine — vă oferă reutilizare plus polimorfism, permițând vă să tratați mai mulți subtipi în mod uniform prin clasa lor comună părinte.
O bibliotecă de întrebări de interviu IT cu răspunsuri detaliate — de la Junior la Senior.
Donează