/ / Eléments du modèle objet Java: classe abstraite, interface

Eléments du modèle objet Java: classe abstraite, interface

L'idée principale de la classe abstraite réside dans la thèse suivante: parfois, des classes non prêtes sont nécessaires, mais sous une forme «brute». De tels espaces ne peuvent pas être utilisés directement (créer des instances).

Java abstract class

Quelle est la classe abstraite en Java?

Considérons un autre exemple. Il existe en Java une classe Calendar abstraite dans le package Java.util. Il n'implémente pas un calendrier spécifique utilisé, par exemple, en Europe occidentale et orientale, en Chine, en Corée du Nord, en Thaïlande, etc. Mais il a de nombreuses fonctions utiles, par exemple ajouter quelques jours à une date précise: ces fonctions sont requises mise en œuvre du calendrier. Vous ne pouvez pas générer une instance à partir d'une classe abstraite.

Classes abstraites, méthodes abstraites Java

Disons que vous devez développer plusieurs graphiquesdes éléments, par exemple, des figures géométriques: un cercle, un rectangle, une étoile, etc. Et il y a un conteneur qui les dessine. Chaque composant a une apparence différente, donc la méthode correspondante (appelée peinture) est implémentée différemment. Cependant, chaque composant a de nombreuses caractéristiques communes: les figures doivent être inscrites dans un rectangle, avoir une couleur, être visibles et invisibles, etc. Vous devez créer une classe parente pour toutes ces formes, où chaque composant héritera des propriétés communes.

classes abstraites méthodes abstraites java
Mais qu'en est-il de la méthode de peinture? Après tout, la classe parente n'a aucune représentation visuelle. Si vous déclarez la méthode de peinture dans chaque classe indépendamment, vous devrez analyser le composant en cours de traitement, puis le convertir. Par conséquent, la méthode doit être déclarée abstraite dans la classe parente: définissez l'en-tête de la méthode sans le corps. Et chaque classe dérivée décrira son corps. En Java, une classe abstraite peut encapsuler des méthodes abstraites.

Si une classe a des méthodes abstraites, alorsla classe est abstraite. Avant le mot class est mis le mot-clé abstract, dans l'en-tête de la méthode - aussi. Après la tête de cette méthode, vous devez mettre un point-virgule. En Java, une classe abstraite ne peut générer d'instances. Si nous voulons interdire leur création, même s'il n'y a pas de méthodes abstraites de la classe, la classe peut être déclarée abstraite. Mais si une classe a au moins une méthode abstraite, alors la classe doit être abstraite. Il est impossible que la classe soit abstraite, finale et méthodique aussi. La méthode ne peut pas être abstraite, privée, statique, native. Pour que les classes héritières soient déclarées non abstraites et créent leurs instances, elles doivent implémenter toutes les méthodes abstraites du parent. La classe elle-même peut utiliser ses méthodes abstraites.

Exemple:

  • classe abstraite AClass {
  • méthode abstraite publique vide (int a);
  • }
  • classe BClass étend AClass {
  • méthode de void public (int a) {
  • // corps
  • }

Les variables de type classe abstraite sont autorisées. Ils peuvent faire référence à un descendant non abstrait de cette classe ou être null.

Interfaces en Java - une alternative à l'héritage multiple

interfaces java et classes abstraites

En Java, il n'y a pas d'héritage multiple, car certains problèmes se posent. Une classe ne peut pas hériter de plusieurs classes. Mais alors il peut implémenter plusieurs interfaces.

Interfaces et classes abstraites Java - Conceptssemblable mais pas le même. L'interface peut être déclarée publique, elle est accessible à tous ou le modificateur public peut être omis. L'interface n'est disponible que dans son package. Le mot-clé abstract n'est pas obligatoire car l'interface est déjà abstraite, mais vous pouvez le spécifier.

Déclaration d'interface

différence de classe abstraite de l'interface java

Il commence par un titre et peut aller en premierle mot clé public, puis le mot interface. Ensuite, il peut y avoir le mot étend et l'énumération d'interfaces dont le donné est hérité. Ici, les répétitions ne sont pas autorisées et il est également impossible que la relation d'héritage crée une dépendance cyclique. Vient ensuite le corps de l’interface entouré d’accolades. Les éléments suivants sont déclarés dans le corps de l'interface: champs constants et méthodes abstraites. Tous les champs sont publics, statiques finales - tous ces modificateurs sont facultatifs. Toutes les méthodes sont considérées comme des abstraits publics. Ces modificateurs peuvent également être spécifiés. Maintenant, on en dit assez sur la différence entre une classe abstraite et une interface Java.

  • interface publique AI étend B, C, D {
  • // corps
  • }

Pour déclarer une classe héritière d'une interface, vous devez utiliser le mot clé implements:

  • la classe AClass implémente BI, CI, DI {}

C'est-à-dire que si un nom d'interface est spécifié dans la déclaration de classe après l'implémentation, la classe l'implémente. Les héritiers de cette classe reçoivent ses éléments, ils l'implémentent également.

Les variables de type d'interface sont également autorisées. Ils peuvent faire référence au type de la classe qui implémente cette interface, ou null. Ces variables ont tous les éléments de la classe Object, car les objets sont générés à partir de classes et que ceux-ci, à leur tour, sont hérités de la classe Object.

Dans cet article, nous avons examiné certains éléments du modèle objet Java: classes abstraites, méthodes abstraites et interfaces.

Lisez plus: