Il polimorfismo è una delle tre caratteristiche della programmazione
ad oggetti (OOP).
Il polimorfismo è la funzionalità che permette di utilizzare un'unica interfaccia per un'intera classe di azioni.
Insieme all'ereditarietà è uno dei punti di forza del framework.NET.
Ecco come implementarlo in C# con una classe astratta:
codice:
using System;
/// <summary>
/// Prova di virtual e override
/// </summary>
public abstract class Animale {/* ecco la superclasse */
public virtual void saluta(){
Console.WriteLine("Ciao, sono un animale\n");
}
}
public class Cane:Animale {/* ecco la derivata */
public override void saluta() {
Console.WriteLine("Ciao, sono un cane\n");
}
}
public class Gatto:Animale {/* ecco la derivata */
public override void saluta() {
Console.WriteLine("Ciao, sono un gatto\n");
}
}
public class Test {
public static void Main() {
Cane bau = new Cane();
Gatto miao = new Gatto();
bau.saluta();
miao.saluta();
}
}
Analizzando le classi abiamo:
* la classe Animale , contrassegnata da abstract che è la nostra superclasse base
* la classe Cane derivata da Animnale
* la classe Gatto derivata da Animale
Analizzando le funzioni abbiamo:
* la funzione saluta() di Animale contrassegnata da virtual
* la funzione saluta() di Cane contrassegnata da override
* la funzione saluta() di Gatto contrassegnata da override
Conclusione:
Le funzioni che noi dichiariamo dentro una classe astrata con la parola riservata virtual,
sono soggette a polimorfismo.
Questo è ottenuto reimplementando la stessa funzione della classe di base in una classe derivata e sostituendo virtual con override.
N.B-->La funzione ereditata e contrassegnata con override nn dovra combiare ne il tipo restituito ne gli argomentii