En Java, une interface est un type abstrait qui définit un comportement que les classes doivent implémenter. Elle est similaire à un protocole . Les interfaces sont déclarées à l'aide du mot-clé `interface` et ne peuvent contenir que la signature des méthodes et les déclarations de constantes (variables déclarées à la fois comme constantes et ` void`). Jusqu'à Java 8, les méthodes d'une interface ne contenaient pas d'implémentation (corps de méthode). À partir de Java 8, les méthodes ` [ avoir une implémentation dans leur définition. En Java 9, les méthodes `void`, `void` et `void` ont été ajoutées. Actuellement, une interface Java peut contenir jusqu'à six types différents. De telles interfaces existent en C# .interfacestaticfinaldefaultstaticinterfaceprivateprivate static
Les interfaces ne peuvent pas être instanciées , mais implémentées. Une classe implémentant une interface doit implémenter toutes les méthodes non par défaut décrites dans l'interface, ou être une classe abstraite . Les références d'objets en Java peuvent être spécifiées comme étant de type interface ; dans ce cas, elles doivent soit être nulles , soit être liées à un objet implémentant l'interface.
L'un des avantages de l'utilisation des interfaces est qu'elles simulent l'héritage multiple . En Java, toute classe doit posséder une unique classe de base , à l'exception de classe racine du système de types Java ; l'héritage multiple de classes est interdit. Cependant, une interface peut hériter de plusieurs interfaces et une classe peut implémenter plusieurs interfaces.
Humans et Parrots comme des sous-classes d'une Whistlermême classe. Ils sont plutôt des sous-classes d'une Animalclasse (probablement via des classes intermédiaires), mais tous deux implémenteraient l' Whistlerinterface.Une autre utilité des interfaces est de pouvoir utiliser un objet sans connaître son type, mais seulement qu'il implémente une interface donnée. Par exemple, si un sifflement vous agace, vous ne saurez peut-être pas s'il provient d'un humain ou d'un perroquet, car vous saurez seulement qu'il siffle. L'appel à whistler.whistle()une méthode appellera la méthode implémentée whistlede l'objet, whistlerquelle que soit sa classe, pourvu qu'il implémente l'interface Whistler. Dans un exemple plus concret, un algorithme de tri peut attendre un objet de type `Object` la définition de classe en Java ) :
[ visibilité ] interface NomInterface [étend d'autres interfaces ] { déclarations de constantes déclarations de méthodes abstraites déclarations de méthodes statiques }Exemple:
abstractmot-clé `abstract` n'est pas requis. L'interface spécifiant un ensemble de comportements exposés, toutes les méthodes sont implicitement abstraites public.Ainsi, une interface simple peut être
abstract.Les classes peuvent implémenter plusieurs interfaces :
Sous-interfaces
Les interfaces peuvent étendre plusieurs autres interfaces, en utilisant la même formule que celle décrite ci-dessous. Par exemple,
Les génériques permettent aux classes implémentées de spécifier les instances de classes auxquelles elles peuvent être comparées.interface marqueur sans méthodes ni champs ; son corps est vide. Elle sert à indiquer qu'une classe peut être sérialisée . Sa Javadoc décrit son fonctionnement, bien qu'aucune contrainte ne soit imposée par programmation.