La notion d'interface est utilisée pour représenter des propriétés transverses de classes. Là où une classe abstraite doit être étendue et spécialisée, une interface nous dit juste que telle classe possède telle propriété, indépendamment de ce qu'elle représente.
Une interface permet aux utilisateurs de créer des programmes, en spécifiant les méthodes publiques qu'une classe doit implémenter, sans impliquer la complexité et les détails de l'implémentation des méthodes. Une interface est définie comme une classe, mais avec le mot-clé interface.
Le but d'une interface fonctionnelle est de définir la signature d'une méthode qui pourra être utilisée pour passer en paramètre : une référence vers une méthode statique. une référence vers une méthode d'instance. une référence vers un constructeur.
Classes abtraites et interfaces ont chacune une fonction bien distincte : les classes abstraites servent à factoriser du code, tandis que les interfaces servent à définir des contrats de service.
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.
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.
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.
une classe est abstraite si elle contient au moins une méthode abstraite ; elle ne peut pas être instanciée, mais ses sous-classes non abstraites le peuvent. une classe abstarite est déclarée avec le modificateur abstract. une classe est abstraite ne peut être instanciée.
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.
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 mécanisme des classes abstraites permet de définir des comportements (méthodes) dont l'implémentation (le code dans la méthode) se fait dans les classes filles. Ainsi, on a l'assurance que les classes filles respecteront le contrat défini par la classe mère abstraite. Ce contrat est une interface de programmation.
En Programmation Orientée Object (POO), la généricité est un concept permettant de définir des algorithmes (types de données et méthodes) identiques qui peuvent être utilisés sur de multiples types de données. Cela permet donc de réduire les quantités de codes à produire.
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.
L'encapsulation permet de définir des niveaux de visibilité des éléments de la classe. Ces niveaux de visibilité définissent les droits d'accès aux données selon que l'on y accède par une méthode de la classe elle-même, d'une classe héritière, ou bien d'une classe quelconque.
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.
La référence «this» est utilisée pour accéder à la variable d'instance de classe. Vous pouvez même passer «this» comme argument dans l'appel de méthode. «This» peut également être utilisé pour invoquer implicitement la méthode de classe actuelle.
Une interface quant à elle définit uniquement les méthodes à implémenter, elle permet de définir un contrat : chaque classe implémentant l'interface sera tenue d'implémenter les méthodes de l'interface.
Une classe abstraite peut contenir ou non des méthodes abstraites. Une classe concrète ne peut pas contenir de méthode abstraite. Une classe abstraite ne peut pas être déclarée finale. Une classe concrète peut être déclarée finale.
Une classe membre statique est une classe java définie dans la partie déclaration des membres d'une autre classe qui la contient (nommée classe englobante), puis qualifiée par le modificateur static. Une classe membre statique est instanciable.
Formellement une classe abstraite n'est pas différente d'une classe normale. Simplement, elle est déclarée en ajoutant le mot-clé abstract , comme dans l'exemple suivant. On peut déclarer autant de méthodes abstraites que l'on veut dans une classe abstraite, y compris ne pas en déclarer du tout.
L'abstraction est l'un des concepts clés dans les langages de programmation orientée objet (POO). Son objectif principal est de gérer la complexité en masquant les détails inutiles à l'utilisateur.
En Java, l'héritage est indiqué par le mot clé extends après le nom de la classe. On dit donc qu'une classe en étend une autre. La classe qui est étendue est appelée classe mère ou classe parente et la classe qui étend est appelée classe fille ou classe enfant.