Sobes.tech
Junior — Middle

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:

  1. 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.

  2. Polimorfismo parametrico (Parametric Polymorphism) — realizzato tramite tipi generici, quando funzioni o classi lavorano con qualsiasi tipo di dato.

  3. Polimorfismo ad-hoc (Ad-hoc Polymorphism) — include overloading di funzioni e operatori, quando una funzione ha più implementazioni con diversi tipi di parametri.

  4. 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
}