2010-05-16 3 views
3

Donc ma question est, pourquoi utiliser des interfaces ou des classes abstraites? Pourquoi sont-ils utiles et pour quoi?Pourquoi une interface ou une classe abstraite est-elle utile? (ou pour quoi?)

Où puis-je les utiliser intelligemment?

+0

en double de http://stackoverflow.com/questions/761194/interface-vs-abstract-class-general-oo et éventuellement http://stackoverflow.com/questions/1474249/abstract-classes-vs-interfaces – mdma

+0

essayez de taper la question dans google et en regardant l'un des premiers millions de résultats. – fearofawhackplanet

+0

un mot - polymorphisme! – nawfal

Répondre

4

Les interfaces vous permettent d'exprimer ce qu'un type fait sans se soucier de la façon dont cela est fait. La mise en œuvre peut être modifiée à volonté sans impact sur les clients.

Les classes abstraites sont semblables aux interfaces, sauf qu'elles vous permettent de fournir un comportement par défaut sensé pour les méthodes où elles existent.

L'utilisation et les exemples dépendent de la langue. Si vous connaissez Java, vous pouvez trouver des exemples d'interfaces et de classes abstraites dans l'API. Les collections java.util ont beaucoup des deux.

+0

Depuis le JDK 8, il est possible d'ajouter un comportement par défaut aux interfaces. Les classes abstraites sont encore différentes parce qu'elles peuvent avoir un état. Les interfaces ne peuvent déclarer que des variables statiques. – duffymo

3

Elles sont utiles lorsque vous souhaitez spécifier un ensemble de méthodes et propriétés communes que toutes les classes qui implémentent/héritent d'elles ont des comportements exposés que tous devraient fournir.

Particulièrement à propos des interfaces, une classe peut implémenter plusieurs interfaces, ce qui est pratique lorsque vous essayez de modéliser le fait que ses instances doivent présenter plusieurs types de comportement. En outre, comme le dit Wikipedia, une interface est une définition de type: partout où un objet peut être passé en paramètre dans un appel de fonction ou de méthode, le type de l'objet à échanger peut être défini en termes d'interface à la place d'une classe spécifique, ceci permettant plus tard d'utiliser la même fonction en échangeant différents types d'objets: un tel code s'avère donc plus générique et réutilisable.

Questions connexes