L-erediżjoni tippermetti għal klassi (subklassi jew ) li taqagħal u testendi l-fields u l-metodi ta' klassi oħra ( jew ). Din immudellizza relazzjoni : .
L-erediżjoni tippermetti għal klassi (subklassi jew ) li taqagħal u testendi l-fields u l-metodi ta' klassi oħra ( jew ). Din immudellizza relazzjoni : .
DogAnimalclass 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 sabet __init__ u eat b'xejn u żied bark. Subklassi tista' wkoll taqhad metodi erediżati biex tbiddel is-sieġa.
| Benefiċċju | Riskju |
|---|---|
| Taqagħal il-kodiċi magħqud | Allarmament strett mal-klassi ġenitur |
| Immudellizza gerarki reali | Klassi bażi fraġli — bidliet ġenitur jikisrux il-ħbibi |
| Polimorfizmu permezz ta' tip komuni | Siġar fond isiru diffiċli li jsegwu |
Linea gwida komuni: agħfas komposizzjoni fuq l-erediżjoni meta r-relazzjoni hija verament "has-a", mhux "is-a".
L-erediżjoni hija l-aktar karatteristika OOP ħażina tal-употреб: hu temptanti li tuża biss biex taqsam il-kodiċi, li jgħaqqad klassijiet mhux relatati.
Metaħsub kif ukoll — biss għal relazzjoniet is-a ġenwini — dan jagħtik erqan bħala ergiement flimkien mal-polimorfizmu, halli tista' tikkonsidra ħafna subtipuri b'mod uniformi permezz tal-klassi ġenitur komuni tagħhom.