Sobes.tech
Junior

Aký je rozdiel medzi dedičstvom a polymorfizmom?

sobes.tech AI

Odpoveď od AI

Dedičstvo je mechanizmus, ktorý umožňuje triede (potomková trieda, odvodená trieda) dediť polia a metódy inej triedy (nadtrieda, supertrieda). To podporuje opakované použitie kódu.

Polymorfizmus je schopnosť používať rovnaké rozhranie na reprezentáciu rôznych základných foriem. V kontexte Javy to znamená, že referencia typu premennej môže odkazovať na objekt svojho vlastného typu alebo na objekt ktoréhokoľvek zo svojich podtypov. Rozlišujú sa polymorfizmus pri kompilácii (preťaženie metód) a pri behu (prepísanie metód).

Hlavný rozdiel:

  • Dedičstvo definuje vzťahy medzi triedami (rodič-dieťa) a umožňuje opakované použitie kódu.
  • Polymorfizmus umožňuje prístup k rôznym objektom cez spoločné rozhranie, vykonávajúc príslušnú metódu v závislosti od skutočného typu objektu počas behu.

Príklad polymorfizmu pri behu:

class Animal {
    public void sound() {
        System.out.println("Zviera vydáva 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(); // Polymorfizmus: premenná typu Animal odkazuje na objekt Dog
        Animal myCat = new Cat(); // Polymorfizmus: premenná typu Animal odkazuje na objekt Cat

        myDog.sound(); // Volá metódu sound() z triedy Dog
        myCat.sound(); // Volá metódu sound() z triedy Cat
    }
}