Oggi sul forum di ASP.NET ho risposto ad un post che mi è sembrato interessante, ed ho deciso di riproporlo come post.
Ho una classe di base abstract B1 e un inrefaccia I1. Creo un'altra classe abstract B2 che eredita da B1 ed implementa I1. Infine ho due classi D1 e D2 che ereditano da B2. Dichiarando un metodo in I1 e volendolo implementare solo in D1 e D2, come posso fare?
Se proviamo a dichiarare il metodo dentro D1 e D2 il compilatore genera un errore per B2 perchè non implementa il metodo dell'interfaccia. Per risolvere il problema basta dichiarare il metodo in B2 come abstract e lasciare l'implementazione del corpo del metodo alle classi D1 e D2.
Un po' di codice:
public abstract classB1
{
public abstract void mB1();
}
public interface I1
{
void mI1();
}
public abstract class B2:B1,I1
{
public abstract void mI1();
}
public class D1:B2
{
publicoverridevoid mI1(){}
publicoverridevoid mB1(){}
}
posted @ venerdì 25 aprile 2008 02:04