Supposons que si j'ai une Interface telle que définie ci-dessous:
public interface IFunctionality
{
void Method();
}
et j'implémente cette interface pour une classe abstraite comme indiqué ci-dessous:
public abstract class AbstractFunctionality: IFunctionality
{
public void Method()
{
Console.WriteLine("Abstract stuff" + "\n");
}
}
de plus, j'ai un béton de classe qui Hérite de la classe abstraite comme ci-dessous:
public class ConcreteFunctionality: AbstractFunctionality
{
public void Method()
{
Console.WriteLine("Concrete stuff" + "\n");
}
}
Maintenant, j'ai le code suivant
ConcreteFunctionality mostDerived = new ConcreteFunctionality();
AbstractFunctionality baseInst = mostDerived;
IFunctionality interfaceInst = mostDerived;
mostDerived.Method();
baseInst.Method();
interfaceInst.Method();
Une sortie qui je suis arriver après l'exécution de ce genre de choses est le suivant.
Concrete stuff
Abstract stuff
Abstract stuff
Mais ce que j'ai attendu la sortie de "Béton Trucs" dans les trois cas que ce que je fais ici est l'assignation de la référence de l' ConcreteFunctionality
pour les variables de type AbstractFunctionality
et IFunctionality
.
Ce qui se passe à l'intérieur. Veuillez préciser.