Mediante l’ereditarietà, una classe può essere utilizzata come diversi tipi, ossia il tipo specifico della classe, qualsiasi tipo base o qualsiasi tipo interfaccia, se vengono implementate interfacce. Questa caratteristica è nota come polimorfismo. In C# tutti i tipi sono polimorfici. Possono infatti essere utilizzati come tipo specifico o come istanza di Object, poiché qualsiasi tipo considera automaticamente Object come tipo base.
Il polimorfismo è importante non solo per le classi derivate ma anche per le classi base. Quando si utilizza la classe base, è possibile che in realtà si stia utilizzando un oggetto della classe derivata di cui è stato eseguito il cast nel tipo della classe base. I progettisti di una classe base possono prevedere gli aspetti della classe che potrebbero cambiare per un tipo derivato.
Affinché un’istanza di una classe derivata acquisisca completamente un membro di una classe base, è necessario che nella classe base tale membro sia dichiarato come virtuale. A tale scopo è necessario aggiungere la parola chiave virtual prima del tipo restituito del membro. In una classe derivata può quindi essere utilizzata la parola chiave override, anziché new, per sostituire l’implementazione della classe base con quella della classe derivata.
public class ClasseBase
{
public virtual void MetodoUno() { }
public virtual int ProprietaUno
{
get { return 0; }
}
}
public class ClasseDerivata : ClasseBase
{
public override void MetodoUno() { }
public override int ProprietaUno
{
get { return 0; }
}
}
Postato in: Linguaggio C# (c sharp), Paradigmi di Programmazione | Messo il tag: classe, classe base, derivazione, override, virtual