Polimorfismo in C#
Il polimorfismo è un concetto chiave nella programmazione orientata agli oggetti (OOP) che si basa sulla capacità di oggetti di classi diverse di rispondere in modo simile a metodi con lo stesso nome. Il polimorfismo consente di scrivere codice che può essere applicato a oggetti di diverse classi in modo uniforme. In questa lezione, esploreremo in dettaglio cos’è il polimorfismo, come funziona e come può essere utilizzato in C#.
Concetto di Polimorfismo
Il polimorfismo si basa sulla capacità di vari oggetti di rispondere a un metodo con lo stesso nome, anche se appartengono a classi diverse. Questo permette di scrivere codice generico che funziona con oggetti di diverse classi senza conoscere il tipo specifico dell’oggetto.
Esempio di Polimorfismo
Supponiamo di avere due classi, Cane
e Gatto
, entrambe con un metodo EmettiSuono()
.
class Cane
{
public void EmettiSuono()
{
Console.WriteLine("Woof!");
}
}
class Gatto
{
public void EmettiSuono()
{
Console.WriteLine("Meow!");
}
}
Ora possiamo creare un array di animali e chiamare il metodo EmettiSuono()
su ciascuno di essi:
Cane cane = new Cane();
Gatto gatto = new Gatto();
Animale[] animali = new Animale[] { cane, gatto };
foreach (Animale animale in animali)
{
animale.EmettiSuono();
}
Se Animale
è una classe base da cui derivano Cane
e Gatto
, il concetto di polimorfismo consente a ciascun oggetto nell’array di rispondere al metodo EmettiSuono()
in modo appropriato, indipendentemente dal fatto che siano di tipo Cane
o Gatto
.
Override di Metodi
Il polimorfismo si basa sulla sovrascrittura dei metodi. Quando una classe derivata (sottoclasse) ridefinisce un metodo della classe di base (superclasse) con la stessa firma, si sta creando un’implementazione specifica per quella classe.
class Animale
{
public virtual void EmettiSuono()
{
Console.WriteLine("Suono generico");
}
}
class Cane : Animale
{
public override void EmettiSuono()
{
Console.WriteLine("Woof!");
}
}
class Gatto : Animale
{
public override void EmettiSuono()
{
Console.WriteLine("Meow!");
}
}
Nell’esempio sopra, il metodo EmettiSuono()
è segnato come virtual
nella classe base e sovrascritto nelle classi derivate.
Utilizzo del Polimorfismo
Il polimorfismo permette di scrivere codice generico e flessibile che funziona con oggetti di diverse classi in modo uniforme. È utile quando si desidera creare funzionalità che devono lavorare con tipi diversi senza sapere a priori quali saranno i tipi concreti utilizzati.
Conclusione
Il polimorfismo è uno dei concetti chiave della programmazione orientata agli oggetti che consente di scrivere codice generico che può essere applicato a oggetti di classi diverse. Attraverso l’override dei metodi, è possibile fornire implementazioni specifiche per ciascuna classe derivata. Utilizzando il polimorfismo in modo efficace, è possibile scrivere codice più flessibile, estendibile e facilmente manutenibile.