Une classe signale les interfaces qu'elle implémente grâce au mot-clé implements. Une classe concrète doit fournir une implémentation pour toutes les méthodes d'une interface, soit dans sa déclaration, soit parce qu'elle en hérite. L'implémentation des méthodes d'une interface suit les mêmes règles que la redéfinition.
On dit qu'une classe implémente une interface, si elle définit les méthodes de l'interface. En java on déclare qu'une classe implémente une interface avec le mot clé implements . Une interface définit un type (comme une classe) et les classes qui implémentent cette interface sont donc des sous-types.
Une interface est implémentée par une classe la déclarant dans sa liste d'implémentation. Cette classe doit alors fournir le code de toutes les méthodes de l'interface, à moins de déclarer ces méthodes comme abstraites.
Les interfaces servent à créer des comportements génériques: si plusieurs classes doivent obéir à un comportement particulier, on créé une interface décrivant ce comportement, on est la fait implémenter par les classes qui en ont besoin.
On utilise pour cela le mot-clé implements . Une classe peut implémenter autant d'interfaces que l'on veut. Une classe concrète doit obligatoirement fournir une implémentation pour toutes les méthodes déclarées par toutes les interfaces qu'elle implémente, soit elle-même, soit une de ses super classes.
Les différences entre les interfaces et les classes abstraites : Une interface n'implémente aucune méthode. Une classe, ou une classe abstraite peut implémenter plusieurs interfaces, mais n'a qu'une super classe, alors qu'une interface peut dériver de plusieurs autres interfaces.
Une interface fonctionnelle en Java est une interface qui ne contient qu'une seule méthode abstraite (non implémentée). Une interface fonctionnelle peut contenir des méthodes par défaut et statiques qui ont une implémentation, en plus de la méthode unique non implémentée.
Le mot clé static est utilisé pour désigner une propriété dont la valeur est identique pour tous les objets de la classe. Le mot clé static est aussi utilisé pour désigner une méthode qui n'accède à aucune propriété non static. Une méthode qui accède à une propriété static doit être déclarée static.
Quand utiliser interface ou classe abstraite ? Des classes similaires sont généralement construites en utilisant une classe abstraite. La classe abstraite aura une implémentation commune. Même si les classes n'ont pas beaucoup en commun, une interface est utilisée pour définir les capacités.
Le polymorphisme est un mécanisme important dans la programmation objet. Il permet de modifier le comportement d'une classe fille par rapport à sa classe mère. Le polymorphisme permet d'utiliser l'héritage comme un mécanisme d'extension en adaptant le comportement des objets.
Les interfaces partagent l'espace de nom avec les classes et les traits, donc elles ne peuvent pas utiliser le même nom. Les interfaces sont définies de la même façon que pour une classe, mais en utilisant le mot-clé interface à la place de class , et sans qu'aucune des méthodes n'ait son contenu de spécifié.
En Java, Swing fournit un ensemble de bibliothèques pour créer une interface graphique (GUI), pour le faire fonctionner indépendamment sur différentes plates-formes. Swing est certainement celui qui est le plus utilisé, car ses propriétés de légèreté, contrôle et de personnalisation facile.
La lettre lambda se trouve environ au milieu de cet alphabet et comporte deux syllabes. Elle se trouve à une position moyenne et quelconque et ne pourra jamais ainsi briller comme une étoile. Lambda est donc utilisé pour désigner tout ce qui est commun.
Un stream (flux) est une représentation d'une séquence sur laquelle il est possible d'appliquer des opérations. Cette API a deux principales intérêts : Elle permet d'effectuer les opérations sur une séquence sans utiliser de structure de boucle.
Une expression lambda permet d'encapsuler un traitement pour être passé à d'autres traitements. C'est un raccourci syntaxique aux classes anonymes internes pour une interface qui ne possède qu'une seule méthode abstraite. Ce type d'interface est nommé interface fonctionnelle.
Définition du polymorphisme
Le nom de polymorphisme vient du grec et signifie qui peut prendre plusieurs formes. Cette caractéristique est un des concepts essentiels de la programmation orientée objet. Alors que l'héritage concerne les classes (et leur hiérarchie), le polymorphisme est relatif aux méthodes des objets.
La classe abstraite peut avoir un modificateur d'accès. Il est préférable d'utiliser l'interface lorsque plusieurs implémentations partagent uniquement la signature de méthode. Il doit être utilisé lorsque différentes implémentations du même type partagent un comportement commun.
L'utilisation d'interfaces permet d'envisager une conception qui sépare la manière d'utiliser une classe de la manière dont elle est implémentée. Deux classes peuvent partager la même interface sans descendre nécessairement de la même classe de base.
La première étape de l'instanciation d'un objet consiste à charger la classe à laquelle il appartient. Cette classe n'est chargée qu'une seule fois, et reste ensuite présente dans la machine Java.
Une méthode de classe ou une méthode statique est une méthode qui n'agit pas sur des variables d'instance mais uniquement sur des variables de classe.
L'interface Comparable modélise les objets qui possèdent un ordre total : la seule méthode est compareTo(autre) qui renvoie un entier positif si l'objet est supérieur à l'autre, 0 s'ils sont égaux, et négatif sinon. Cette interface permet d'utiliser des collections d'objets ordonnés comme TreeSet.
Une interface doit refléter lavision logique du système qu'ont les utilisateurs. Le modèle des Objets de Domaine (cf. 1.6 ) est la base conceptuelle qui nous permet de décrire les concepts et la sémantique du système d'une façon cohérente avec la vision logique qu'en ont les utilisateurs. et son comportement effectif.
Les versions standards de Python incluent une interface orientée objet pour le jeu d'objets graphiques Tcl/Tk, appelée tkinter. C'est probablement la plus facile à installer (puisqu'elle est incluse avec la plupart des distributions binaires de Python) et à utiliser.