Junior
Qual è la differenza tra ereditarietà e polimorfismo?
sobes.tech AI
Risposta dell'AI
L'eredità è un meccanismo che consente a una classe (sottoclasse, classe derivata) di ereditare campi e metodi di un'altra classe (superclasse, classe base). Ciò favorisce il riutilizzo del codice.
Il polimorfismo è la capacità di usare un'interfaccia comune per rappresentare diverse forme di base. Nel contesto di Java, ciò significa che una variabile di tipo riferimento può riferirsi a un oggetto del suo stesso tipo o a un oggetto di uno dei suoi sottotipi. Si distinguono il polimorfismo in fase di compilazione (overloading dei metodi) e in fase di esecuzione (override dei metodi).
La principale differenza:
- Eredità definisce relazioni tra classi (genitore-figlio) e permette di riutilizzare il codice.
- Polimorfismo permette di accedere a diversi oggetti tramite un'interfaccia comune, eseguendo il metodo corrispondente in base al tipo effettivo dell'oggetto durante l'esecuzione.
Esempio di polimorfismo in fase di esecuzione:
class Animal {
public void sound() {
System.out.println("L'animale emette un suono");
}
}
class Dog extends Animal {
@Override
public void sound() {
System.out.println("bau-bau");
}
}
class Cat extends Animal {
@Override
public void sound() {
System.out.println("miao-miao");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // Polimorfismo: variabile di tipo Animal che fa riferimento a un oggetto Dog
Animal myCat = new Cat(); // Polimorfismo: variabile di tipo Animal che fa riferimento a un oggetto Cat
myDog.sound(); // Chiama il metodo sound() della classe Dog
myCat.sound(); // Chiama il metodo sound() della classe Cat
}
}