Trashëgimia i lejon një klase (nënklasa ose fëmija) të ringjasë dhe të zgjerojë fushat dhe metodat e një klase tjetër (superklasa ose prindi). Ajo modelon një marrëdhënie është-një: një Dog është një Animal.
Trashëgimia i lejon një klase (nënklasa ose fëmija) të ringjasë dhe të zgjerojë fushat dhe metodat e një klase tjetër (superklasa ose prindi). Ajo modelon një marrëdhënie është-një: një Dog është një Animal.
class 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 mori __init__ dhe eat falas dhe shtoi bark. Një nënklase mund gjithashtu të anashkalojë metodat e trashëguara për të ndryshuar sjelljen.
| Përfitim | Rrezik |
|---|---|
| Ringjasja e kodit të ndarë | Bashkim i ngushtë me klasën mëmë |
| Modelimi i hierarkive të vërteta | Klasa bazë e dobët — ndryshimet e prindërve thyejnë fëmijët |
| Polimorfizmi përmes një tipi të përbashkët | Pemadhet e thella bëhen të vështira për t'u ndjekur |
Një udhëzim i zakonshëm: prefero përbërjen para trashëgimisë kur marrëdhënia është vërtet "ka-një", jo "është-një".
Trashëgimia është veçoria më e zëvendësuar në OOP: është tundim ta përdorni thjesht për të ndarë kod, i cili i lidh klasat e palidhura.
Mestërisht e përdorur — vetëm për marrëdhënie të vërteta është-një — ju jep ringjasje plus polimorfizmi, duke ju lejuar të trajtoni shumë nëntipet në mënyrë të njëtrajtshme përmes prindërit të tyre të përbashkët.
Një bibliotekë pyetjesh intervistash IT me përgjigje të detajuara — nga Junior te Senior.
Dhuro