2009-08-28 9 views

Répondre

8

Oui, utilisez une interface. Une interface est fondamentalement un contrat disant "hé, vous devez implémenter ces membres, ou je ne vais pas compiler."

+0

Merci ... heureux de savoir que j'étais rite :-) – Wondering

-1

En fait, ces concepts ne se comparent même pas entre eux.

+0

Peut-on expliquer? – Wondering

+0

Vous pouvez avoir un point valide - mais sans au moins un peu d'explication ce genre de réponse est moins qu'utile. C'est aussi au moins un peu faux (puisque l'héritage et les interfaces sont clairement liés - du moins en termes de question). – Murph

+0

Vous avez raison. Je pourrais être plus clair. Ce que je voulais dire, c'est que ces concepts ne sont pas mutuellement exclusifs. Vous pouvez avoir à la fois l'encapsulation et l'héritage par exemple. Maintenant, je vois que j'ai compris la mauvaise question. Je pensais que OP demandait lequel utiliser. Je n'ai pas vu que c'était une question de test. Désolé pour la confusion. – erelender

3

Une interface garantira que la classe possède des stubs de méthode pour toutes les méthodes, mais ils ne seront peut-être pas implémentés et pourront lancer des NotImplementedExceptions.

Une meilleure façon de s'assurer que toutes les méthodes sont implémentées serait d'utiliser des tests unitaires dans lesquels vous vérifiez que les méthodes font réellement ce qu'elles doivent faire.

+0

Le problème de dire "utiliser des tests unitaires" est que c'est plutôt dépendant du contexte dans lequel la question est posée ... si vous demandez "ai-je implémenté toutes les méthodes" alors oui, probablement. Si, d'un autre côté, vous dites «je veux m'assurer que quelqu'un qui met en œuvre« ceci »a fourni toutes les méthodes nécessaires», alors c'est un problème assez différent. – Murph

4

Une interface ou une classe abstraite accomplira ce que vous voulez. Dans une classe abstraite, si method est marqué abstract, il doit être implémenté dans la classe dérivée. La question se résume à laquelle vous devriez utiliser. Une interface ou une classe abstraite.

La réponse rapide (et je veux dire rapide et sale) est que vous devriez utiliser une interface lorsque vous essayez d'établir un comportement contractuel entre les classes. Vous devez utiliser une classe abstraite lorsque l'ensemble de la classe dérivée a un comportement partagé.

Questions connexes