135 votes

C #: Les classes abstraites doivent-elles implémenter des interfaces?

Mon code de test en C #:

 namespace DSnA
{
    public abstract class Test : IComparable
    {

    }
}
 

Résultats dans l'erreur de compilation suivante:

 error CS0535: 'DSnA.Test' does not implement interface member
'System.IComparable.CompareTo(object)'
 

Puisque la classe Test est une classe abstraite , pourquoi le compilateur exige-t-il qu'elle implémente l'interface? Cette exigence ne devrait-elle pas être obligatoire que pour des cours concrets?

152voto

Joel Points 6958

En C #, vous définissez toujours les méthodes, mais vous ne fournissez pas de corps et vous le marquez comme abstrait. Ainsi:

 interface IFoo
{
    void Bar();
}

abstract class Foo : IFoo
{
    public abstract void Bar();
}
 

6voto

ntziolis Points 7360

Ils ne doivent pas réellement implémenter l'interface .
Les méthodes / propriétés d'interface peuvent être abstraites, voire virtuelles. Il appartient donc aux sous-classes de les implémenter réellement.

4voto

Andrey Points 36869

vous pouvez simplement mettre la définition de la méthode et marquer abstract

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X