52 votes

Pourquoi est-ce que j'obtiens une erreur lors de l'instanciation d'une interface ?

J'ai une classe et une interface, et lorsque j'essaie d'instancier l'interface, j'obtiens une erreur :

Impossible de créer une instance de la classe abstraite ou de l'interface

Mon code est ci-dessous :

 namespace MyNamespace
{
    public interface IUser
    {
        int Property1 { get; set; }
        string Property2 { get; set; }
        string Property3 { get; set; }
        void GetUser();
    }

    public class User : IUser
    {
        public int Property1 { get; set; }
        public string Property2 { get; set; }
        public string Property3 { get; set; }

        public void GetUser()
        {
           //some logic here...... 
        }

    }
}

Lorsque j'essaie d'instancier IUser user = new IUser(); j'obtiens une erreur :

Impossible de créer une instance de la classe abstraite ou de l'interface

Qu'est-ce que je fais de mal ici ?

16voto

ChrisBint Points 7872

IUser est l'interface, vous ne pouvez pas instancier l'interface.

Vous devez instancier la classe concrète qui implémente l'interface.

 IUser user = new User();

ou

 User user = new User();

6voto

Yochai Timmer Points 19802

Vous ne pouvez pas instancier des interfaces ou des classes abstraites.

C'est parce que cela n'aurait aucune logique.

Les interfaces fournissent un contrat des méthodes qui devraient être dans une classe, sans implémentation. (Il n'y a donc pas de logique réelle dans l'interface).

Les classes abstraites fournissent la logique de base d'une classe, mais ne sont pas entièrement fonctionnelles (tout n'est pas implémenté). Donc, encore une fois, vous ne pourrez rien faire avec.

2voto

George Johnston Points 17237

Vous ne pouvez pas instancier une classe ou une interface abstraite. Vous devez en hériter, s'il s'agit d'une classe abstraite, ou l'implémenter s'il s'agit d'une interface. par exemple

 ...
private class User : IUser
{
  ...
}

User u = new User();

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