Sobes.tech
Middle
141

Quali meccanismi di implementazione del polimorfismo esistono in Java?

Risposta dell'AI

sobes.tech AI

  • Polimorfismo in fase di compilazione (polimorfismo statico): Viene realizzato tramite il sovraccarico dei metodi (method overloading). I metodi hanno lo stesso nome, ma firme diverse (numero, tipo o ordine degli argomenti).

    class Calculator {
        // Sovraccarico del metodo add
        public int add(int a, int b) {
            return a + b;
        }
    
        public double add(double a, double b) {
            return a + b;
        }
    }
    
  • Polimorfismo in fase di esecuzione (polimorfismo dinamico): Viene realizzato tramite la sovrascrittura dei metodi (method overriding). Il metodo nella sottoclasse ha la stessa firma del metodo nella superclasse e fornisce una propria implementazione. La decisione su quale metodo chiamare viene presa in fase di esecuzione in base al tipo effettivo dell’oggetto.

    class Animal {
        public void sound() {
            System.out.println("L’animale fa un suono");
        }
    }
    
    class Dog extends Animal {
        // Sovrascrittura del metodo sound
        @Override
        public void sound() {
            System.out.println("Il cane abbaia");
        }
    }
    
    class Cat extends Animal {
        // Sovrascrittura del metodo sound
        @Override
        public void sound() {
            System.out.println("Il gatto miagola");
        }
    }
    
  • Riferimenti a superclasse / interfaccia: Gli oggetti delle sottoclassi possono essere assegnati a riferimenti di superclasse o interfacce che implementano. Questo permette di trattare in modo uniforme oggetti di tipi diversi tramite un riferimento comune. La chiamata a un metodo sovrascritto tramite tale riferimento porta all’esecuzione della versione del metodo del tipo reale dell’oggetto.

    Animal myAnimal = new Dog(); // Assegnazione di un oggetto Dog a un riferimento di tipo Animal
    myAnimal.sound(); // Viene chiamato il metodo sovrascritto sound() della classe Dog