Sobes.tech
Junior

Co jsou dědičnost a polymorfismus v referenčních typech dat?

sobes.tech AI

Odpověď od AI

Dědičnost je mechanismus, který umožňuje jedné třídě (potomková třída, odvozená třída) dědit vlastnosti a chování jiné třídy (základní třída, rodičovská třída). To podporuje opakované použití kódu a vytváření hierarchií tříd.

Polymorfismus je schopnost objektů různých tříd reagovat na stejnou zprávu (volání metody) různým způsobem, v závislosti na jejich konkrétním typu. V kontextu dědičnosti se to často projevuje přepsáním metod základní třídy v odvozené třídě.

Příklad (Java):

// Základní třída
class Animal {
    public void makeSound() {
        System.out.println("Zvíře vydává zvuk");
    }
}

// Odvozená třída
class Dog extends Animal {
    @Override // Přepsání metody
    public void makeSound() {
        System.out.println("Haf!");
    }
}

// Odvozená třída
class Cat extends Animal {
    @Override // Přepsání metody
    public void makeSound() {
        System.out.println("Mňau!");
    }
}

class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // Objekt Dog, ale odkaz typu Animal
        Animal myCat = new Cat(); // Objekt Cat, ale odkaz typu Animal

        myDog.makeSound(); // Volá metodu Dog
        myCat.makeSound(); // Volá metodu Cat
    }
}

V tomto příkladu:

  • Dědičnost: Třídy Dog a Cat dědí od Animal.
  • Polymorfismus: Proměnné myDog a myCat odkazují na objekty Dog a Cat respektive, i když mají typ Animal. Při volání makeSound() se spustí metoda objektu, nikoliv typu odkazu.