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