Dědičnost umožňuje jedné třídě (potomkovi) zdědit atributy a metody od jiné třídy (rodiče). To umožňuje znovupoužití kódu a vytváření hierarchií tříd.
class Zvire:
def __init__(self, druh):
self.druh = druh
def zvuk(self):
pass
class Pes(Zvire):
def __init__(self, jmeno, vek):
super().__init__("Pes")
self.jmeno = jmeno
self.vek = vek
def zvuk(self):
return "Haf haf!"
V tomto příkladu třída Pes dědí od třídy Zvire. Metoda zvuk je přepsána, aby vracela specifický zvuk pro psa.
Použití super() v metodě __init__ zajišťuje, že konstruktor rodičovské třídy Zvire je také volán.
Polymorfismus umožňuje volání stejné metody na objektech různých tříd, přičemž každá třída implementuje tuto metodu podle své potřeby. To je klíčový princip v OOP, který podporuje flexibilitu a rozšiřitelnost kódu.
class Kocka(Zvire):
def zvuk(self):
return "Mňau!"
class Krava(Zvire):
def zvuk(self):
return "Múú!"
V tomto příkladu máme třídy Kocka a Krava, které obě dědí od třídy Zvire a implementují metodu zvuk. Polymorfismus nám umožňuje volat tuto metodu na jakékoli instanci třídy Zvire, aniž bychom museli vědět, jaká konkrétní třída byla použita.