Polimorfismo in C#

Il polimorfismo in C# è uno dei concetti fondamentali della programmazione orientata agli oggetti. Significa che un’azione può essere eseguita in modi diversi a seconda dell’oggetto su cui viene chiamata. In parole semplici, permette di trattare oggetti di classi diverse attraverso la stessa interfaccia o classe base. Grazie al polimorfismo, possiamo scrivere codice più flessibile e manutenibile.

Esempio di polimorfismo in C#

Vediamo ora un esempio per chiarire meglio il concetto. Supponiamo di avere una classe base chiamata Animale e due classi derivate: Cane e Gatto. Entrambi ereditano da Animale, ma implementano il loro metodo FaiVerso in maniera differente.

public class Animale
{
    public virtual void FaiVerso()
    {
        Console.WriteLine("L'animale fa un verso.");
    }
}

public class Cane : Animale
{
    public override void FaiVerso()
    {
        Console.WriteLine("Il cane abbaia.");
    }
}

public class Gatto : Animale
{
    public override void FaiVerso()
    {
        Console.WriteLine("Il gatto miagola.");
    }
}

public class Programma
{
    public static void Main()
    {
        Animale mioAnimale = new Cane();
        mioAnimale.FaiVerso(); // Uscita: Il cane abbaia

        mioAnimale = new Gatto();
        mioAnimale.FaiVerso(); // Uscita: Il gatto miagola
    }
}

Override dei metodi: Come funziona in C#

Nel codice precedente, abbiamo usato la parola chiave override per modificare il comportamento del metodo FaiVerso. Questo è un altro concetto importante legato al polimorfismo. Il metodo originale è definito nella classe base Animale con l’uso di virtual, il che significa che le classi derivate possono sovrascriverlo.

Nel nostro esempio, sia Cane che Gatto sovrascrivono il metodo, fornendo la propria implementazione specifica. Grazie al polimorfismo, possiamo chiamare lo stesso metodo su oggetti diversi e ottenere risultati diversi a seconda dell’oggetto reale su cui viene chiamato.

Quando e come utilizzare il polimorfismo in C#

Il polimorfismo è molto utile quando abbiamo una struttura di classi che condivide una logica comune ma ha comportamenti specifici nelle classi derivate. Ad esempio, possiamo creare una lista di oggetti Animale e inserire sia oggetti di tipo Cane che di tipo Gatto, utilizzando il metodo FaiVerso su tutti gli oggetti senza doverli distinguere manualmente.

List<Animale> animali = new List<Animale>()
{
    new Cane(),
    new Gatto()
};

foreach (Animale animale in animali)
{
    animale.FaiVerso(); // Chiama FaiVerso per ogni oggetto, mostrando il polimorfismo
}

Conclusione

Il polimorfismo in C# è un concetto potente che ti permette di scrivere codice più pulito e organizzato. Grazie a questo principio, puoi evitare di scrivere lunghi blocchi di istruzioni condizionali e rendere il tuo codice più flessibile e facile da mantenere. Se stai imparando C#, dedicare del tempo a comprendere il polimorfismo ti aiuterà a padroneggiare meglio la programmazione orientata agli oggetti.

Corsi correlati

In Arrivo

Design Pattern per videogiochi

I Design Pattern sono soluzioni a problemi comuni che si incontrano nello sviluppo del software. Nel contesto dei videogiochi, questi pattern possono aiutare a gestire la complessità crescente dei giochi moderni. Sei appassionato di videogiochi? Hai mai pensato a come vengono progettati e sviluppati? Sei curioso di scoprire i segreti dietro la creazione dei tuoi giochi preferiti? Allora sei nel posto giusto! Questo corso è stato progettato per fornirti una solida comprensione dei Design Pattern, strumenti fondamentali per ogni sviluppatore di giochi. Attraverso esempi pratici e realistici, esploreremo insieme come questi pattern possono aiutarti a creare giochi più efficienti, flessibili e mantenibili.

In Arrivo

Corso Fondamenti di Python

Python, uno dei linguaggi di programmazione più popolari al mondo, è ampiamente utilizzato da colossi dell’informatica e della tecnologia come Google, la Nasa e Mozilla.
Questo corso sui fondamenti di Python esplorerà le ragioni del suo successo duraturo. Impareremo la potente ed espressiva sintassi di Python, che consente di ottenere risultati impressionanti con poche righe di codice.

In Arrivo

Blender Masterclass 2

I paesaggi, in generale, possono risultare intimidatori data la loro complessità, costituita da numerosi elementi che sembrano formare qualcosa di virtualmente infinito. Durante le lezioni di questo corso, ci concentreremo su una scomposizione delle diverse fasi coinvolte nella creazione di una scena, affrontandole una alla volta attraverso passi graduati.

In Arrivo

Blender Masterclass 1

In questo corso di Blender 3D, Masha, in collaborazione con Gedemy, vi mostrerà il processo di modellazione, UV mapping, shading, e texture painting di un asset. Una volta apprese le basi, vedremo anche come effettuare il baking delle textures e la preparazione con successivo export della mesh in modo che possa essere utilizzabile all’interno di un qualsiasi altro software.

Crea il tuo account gratuito Gedemy

Gedemy è la piattaforma di formazione che ti permette di sviluppare competenze verticali corsi in un unico piano realizzati da esperti in ambiti come Marketing, Business, Design, Tech, AI e molto altro.

Login

Oppure

Non sei ancora registrato?