Jaké mechanismy implementace polymorfismu v Javě existují?
Odpověď od AI
sobes.tech AI
-
Překladový čas (statický polymorfismus): Je realizován pomocí přetížení metod (method overloading). Metody mají stejný název, ale různé podpisy (počet, typ nebo pořadí argumentů).
class Calculator { // Přetížení metody add public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } } -
Dynamický polymorfismus (běhový čas): Je realizován pomocí přepsání metod (method overriding). Metoda v podtřídě má stejnou signaturu jako metoda v nadtřídě a poskytuje vlastní implementaci. Rozhodnutí, kterou metodu volat, se provádí v době běhu na základě skutečného typu objektu.
class Animal { public void sound() { System.out.println("Zvíře vydává zvuk"); } } class Dog extends Animal { // Přepsání metody sound @Override public void sound() { System.out.println("Pes štěká"); } } class Cat extends Animal { // Přepsání metody sound @Override public void sound() { System.out.println("Kočka mňouká"); } } -
Odkazy na nadtřídu / rozhraní: Objektům podtříd lze přiřadit odkazy na nadtřídy nebo rozhraní, které implementují. To umožňuje jednotné zpracování objektů různých typů prostřednictvím společného odkazu. Volání přepsané metody přes takový odkaz vede k provedení verze metody z skutečného typu objektu.
Animal myAnimal = new Dog(); // Přiřazení objektu Dog k odkazu typu Animal myAnimal.sound(); // Volání přepsané metody sound() z třídy Dog