codice:
using System;
public interface IAnimale {/* ecco l' interfaccia */
public virtual void saluta();
}
public class Cane:IAnimale {/* ecco la derivata */
public override void saluta() {
Console.WriteLine("Ciao, sono un cane\n");
}
}
public class Gatto:IAnimale {/* 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 interfaccia IAnimale ,che è la nostra base
* la classe Cane derivata da Animale
* la classe Gatto derivata da Animale
Analizzando le funzioni abbiamo:
* la funzione saluta() di Animale contrassegnata da virtual e nn implementata
perche facente parte di interfaccia
* la funzione saluta() di Cane contrassegnata da override
* la funzione saluta() di Gatto contrassegnata da override
Conclusione:
La differenza tra classi astratte e interfaccie e che le interfaccie nn contengono implementazioni e nn possono essere istanziate.