Aké mechanizmy implementácie polymorfizmu existujú v Jave?
sobes.tech AI
Odpoveď od AI
-
Prekladový čas (statický polymorfizmus): Je realizovaný pomocou preťaženia metód (method overloading). Metódy majú rovnaký názov, ale rôzne podpisy (počet, typ alebo poradie argumentov).
class Calculator { // Preťaženie metódy add public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } } -
Dynamický polymorfizmus (čas behu): Je realizovaný pomocou prepisovania metód (method overriding). Metóda v podtriede má rovnakú podpis ako metóda v nadtriede a poskytuje vlastnú implementáciu. Rozhodnutie, ktorú metódu volať, sa prijíma počas behu na základe skutočného typu objektu.
class Animal { public void sound() { System.out.println("Zviera vydáva zvuk"); } } class Dog extends Animal { // Prepisovanie metódy sound @Override public void sound() { System.out.println("Pes šteka"); } } class Cat extends Animal { // Prepisovanie metódy sound @Override public void sound() { System.out.println("Mačka mňauká"); } } -
Odkazy na nadtriedu / rozhranie: Objektom podtried môžu byť priradené odkazy na nadtriedy alebo rozhrania, ktoré implementujú. To umožňuje jednotné spracovanie objektov rôznych typov prostredníctvom spoločného odkazu. Volanie prepisanej metódy cez takýto odkaz vedie k vykonaniu verzie metódy z reálneho typu objektu.
Animal myAnimal = new Dog(); // Priradenie objektu Dog odkazu typu Animal myAnimal.sound(); // Volanie prepisanej metódy sound() z triedy Dog