Sobes.tech
Middle

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