Junior
Cosa sono l'ereditarietà e il polimorfismo nei tipi di dati di riferimento?
sobes.tech AI
Risposta dell'AI
L'ereditarietà è un meccanismo che consente a una classe (classe figlia, classe derivata) di ereditare proprietà e comportamenti di un'altra classe (classe base, classe genitore). Ciò favorisce il riutilizzo del codice e la creazione di gerarchie di classi.
Il polimorfismo è la capacità di oggetti di classi diverse di rispondere in modo diverso allo stesso messaggio (chiamata di metodo), a seconda del loro tipo concreto. Nel contesto dell'ereditarietà, ciò si manifesta spesso attraverso la sovrascrittura dei metodi della classe base nella classe derivata.
Esempio (Java):
// Classe base
class Animal {
public void makeSound() {
System.out.println("L'animale emette un suono");
}
}
// Classe derivata
class Dog extends Animal {
@Override // Sovrascrittura del metodo
public void makeSound() {
System.out.println(" Bau!");
}
}
// Classe derivata
class Cat extends Animal {
@Override // Sovrascrittura del metodo
public void makeSound() {
System.out.println("Miao!");
}
}
class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // Oggetto Dog, ma riferimento di tipo Animal
Animal myCat = new Cat(); // Oggetto Cat, ma riferimento di tipo Animal
myDog.makeSound(); // Chiama il metodo di Dog
myCat.makeSound(); // Chiama il metodo di Cat
}
}
In questo esempio:
- Ereditarietà: Le classi
DogeCatereditano daAnimal. - Polimorfismo: Le variabili
myDogemyCatfanno riferimento a oggettiDogeCatrispettivamente, anche se hanno tipoAnimal. Quando si chiamamakeSound(), viene eseguito il metodo dell'oggetto, non quello del tipo di riferimento.