Puoi elencare i diversi tipi di polimorfismo nella programmazione orientata agli oggetti?
sobes.tech AI
Risposta dell'AI
Nella programmazione orientata agli oggetti (OOP), si distinguono diversi principali tipi di polimorfismo:
-
Polimorfismo di sottotipo (Subtype Polymorphism) — il tipo più comune, implementato tramite ereditarietà e overriding dei metodi. Permette di usare oggetti di sottoclassi al posto di oggetti della classe base.
-
Polimorfismo parametrico (Parametric Polymorphism) — realizzato tramite tipi generici, quando funzioni o classi lavorano con qualsiasi tipo di dato.
-
Polimorfismo ad-hoc (Ad-hoc Polymorphism) — include overloading di funzioni e operatori, quando una funzione ha più implementazioni con diversi tipi di parametri.
-
Polimorfismo in tempo di esecuzione (Runtime Polymorphism) — si ottiene tramite metodi virtuali e binding dinamico, quando la chiamata al metodo viene determinata in fase di esecuzione.
Esempio di polimorfismo di sottotipo in Swift (iOS):
class Animal {
func sound() {
print("Suono qualsiasi")
}
}
class Dog: Animal {
override func sound() {
print("Abbaio")
}
}
class Cat: Animal {
override func sound() {
print("Miao")
}
}
let animals: [Animal] = [Dog(), Cat()]
for animal in animals {
animal.sound() // La chiamata al metodo dipende dal tipo reale dell'oggetto
}