J'ai eu récemment deux entretiens téléphoniques où j'ai été interrogé sur les différences entre une Interface et une classe Abstraite. J'ai expliqué tous les aspects d'entre eux, je pense, mais il semble qu'ils sont en attente pour moi de parler de quelque chose de spécifique, et je ne sais pas ce que c'est.
De mon expérience, je pense que ce qui suit est vrai. Si il me manque un point important s'il vous plaît laissez-moi savoir.
Interface:
Chaque Méthode unique déclarées dans une Interface devra être mis en œuvre dans la sous-classe. Seuls les Événements, les Délégués, les Propriétés (C#) et les Méthodes peuvent exister dans une Interface. Une classe peut implémenter plusieurs Interfaces.
Classe Abstraite:
Seulement les méthodes Abstraites doivent être mises en œuvre par la sous-classe. Une classe Abstraite peut avoir des méthodes normales avec les implémentations. Classe abstraite peut aussi avoir des variables de classe à côté des Événements, des Délégués, des Propriétés et des Méthodes. Une classe peut implémenter une classe abstraite seulement en raison de la non-existence de Multi-héritage en C#.
Après tout cela, l'enquêteur est venu avec la question "si vous aviez une classe Abstraite avec seulement des méthodes abstraites? Comment pourrait-il être différent d'une interface?" Je ne connaissais pas la réponse, mais je pense que c'est l'héritage comme mentionné ci-dessus à droite?
Un autre enquêteur m'a demandé ce que si vous aviez une variable Publique à l'intérieur de l'interface, comment pourrait-il être différent de celui de la Classe Abstraite? J'ai insisté pour que vous ne pouvez pas avoir une variable publique à l'intérieur d'une interface. Je ne savais pas ce qu'il voulait entendre, mais il n'était pas satisfait.
Voir Aussi: