Sobes.tech
Junior

Jaký je rozdíl mezi dědičností a polymorfismem?

sobes.tech AI

Odpověď od AI

Dědičnost je mechanismus, který umožňuje třídě (potomková třída, odvozená třída) dědit pole a metody jiné třídy (nadřazená třída, supertřída). To podporuje opakované použití kódu.

Polymorfismus je schopnost používat stejný rozhraní k reprezentaci různých základních forem. V kontextu Java to znamená, že proměnná referenčního typu může odkazovat na objekt svého vlastního typu nebo na objekt jakéhokoli ze svých podtypů. Rozlišují se polymorfismus při kompilaci (přetížení metod) a při běhu (přepsání metod).

Hlavní rozdíl:

  • Dědičnost definuje vztahy mezi třídami (rodič-dítě) a umožňuje opakované použití kódu.
  • Polymorfismus umožňuje přistupovat k různým objektům přes společné rozhraní, přičemž se vykoná odpovídající metoda podle skutečného typu objektu při běhu.

Příklad polymorfismu při běhu:

class Animal {
    public void sound() {
        System.out.println("Zvíře vydává zvuk");
    }
}

class Dog extends Animal {
    @Override
    public void sound() {
        System.out.println("Haf haf");
    }
}

class Cat extends Animal {
    @Override
    public void sound() {
        System.out.println("Mňau-mňau");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // Polymorfismus: proměnná typu Animal odkazuje na objekt Dog
        Animal myCat = new Cat(); // Polymorfismus: proměnná typu Animal odkazuje na objekt Cat

        myDog.sound(); // Volá metodu sound() třídy Dog
        myCat.sound(); // Volá metodu sound() třídy Cat
    }
}