Výuka IT

Dědičnost a polymorfismus

Dědičnost

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

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.