Milyen polimorfizmus megvalósítási mechanizmusok léteznek Java-ban?
sobes.tech MI
Válasz az MI-től
-
Fordítási időben történő polimorfizmus (statikus polimorfizmus): A metódusok túlterhelésével (method overloading) valósul meg. A metódusok ugyanazzal a névvel rendelkeznek, de különböző szignatúrákkal (argumentumok száma, típusa vagy sorrendje).
class Calculator { // A add metódus túlterhelése public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } } -
Futásidejű polimorfizmus (dinamikus polimorfizmus): A metódus felülírásával (method overriding) valósul meg. A leszármazott osztályban lévő metódus ugyanazzal a szignatúrával rendelkezik, mint a szülő osztályban, és saját implementációt nyújt. A melyik metódus hívódik meg, futásidőben dől el az objektum tényleges típusa alapján.
class Animal { public void sound() { System.out.println("Állat hangot ad"); } } class Dog extends Animal { // A sound metódus felülírása @Override public void sound() { System.out.println("Kutya ugat"); } } class Cat extends Animal { // A sound metódus felülírása @Override public void sound() { System.out.println("Macska nyávog"); } } -
Szülőosztály / interfész referenciák: Az alosztályok objektumai hozzárendelhetők szülőosztályok vagy általuk megvalósított interfészek referenciáihoz. Ez lehetővé teszi különböző típusú objektumok egységes kezelését közös referencia segítségével. Egy ilyen referencia által hívott felülírt metódus a tényleges objektum típusának megfelelő verziót hajtja végre.
Animal myAnimal = new Dog(); // Dog objektum hozzárendelése egy Animal típusú referenciahoz myAnimal.sound(); // A Dog osztályból származó felülírt sound() metódus hívása