Maison  >  Article  >  Java  >  Classe abstraite en Java

Classe abstraite en Java

PHPz
PHPzoriginal
2024-08-30 15:59:08852parcourir

L'article suivant fournit un aperçu de la classe abstraite en Java. Les classes abstraites sont comme toutes les autres classes normales en Java. La différence significative entre les classes abstraites et régulières est la création de la classe abstraite, nous devons utiliser le mot-clé 'ABSTRACT'. Il s'agit d'une séparation de l'implémentation des classes. Ils définissaient les caractéristiques très communes de ses sous-classes. Un tel type de classe est appelé classe abstraite. Plus important encore, nous ne pouvons pas créer un objet d'une classe abstraite.

Commencez votre cours de développement de logiciels libres

Développement Web, langages de programmation, tests de logiciels et autres

Les classes abstraites peuvent contenir des méthodes abstraites et non abstraites. Cependant, ils ne peuvent pas contenir un corps de méthode abstraite que la sous-classe peut uniquement fournir. Si la sous-classe n’implémente pas la méthode abstraite, alors nous devons explicitement la rendre ABSTRACT. En d’autres termes, si une classe contient une méthode abstraite, elle doit se définir comme ABSTRACT. Nous pouvons regrouper plusieurs classes Java à l'aide de classes abstraites, optimiser le code, rendre le code plus lisible et réduire la redondance. Il fournit également un modèle pour les futurs cours.

Syntaxe de la classe abstraite en Java

La syntaxe de la classe abstraite est la suivante :

Classe abstraite en Java

Comment fonctionne la classe abstraite en Java ?

  • Une classe abstraite a une méthode abstraite et une méthode non abstraite, c'est-à-dire une méthode abstraite sans corps, et elles peuvent avoir des méthodes avec implémentation.
  • Une classe abstraite est utilisée pour fournir la fonctionnalité la plus courante spécifique aux différentes classes. Les sous-classes peuvent implémenter ces méthodes abstraites différemment selon leurs besoins ou exigences.
  • Nous ne pouvons pas créer un objet d'une classe abstraite en utilisant l'opérateur 'new', mais nous pouvons toujours définir son constructeur, qui ne peut être invoqué que dans le constructeur de sa sous-classe. Un constructeur de sous-classe peut accéder à un constructeur de superclasse pour initialiser sa variable, qui peut être utilisée dans la sous-classe pour des exigences supplémentaires.

Exemples de classe abstraite en Java

Les exemples suivants sont donnés ci-dessous :

Humain.java

package com.cont.article;
public abstract class Human
{
public abstract void whatTheylike();
public void doTheysleep()
{
System.out.println("Yes every human require sleep.");
}
}

Humain1.java

package com.cont.article;
public class Human1 extends Human
{
@Override
public void whatTheylike()
{
System.out.println("we like to have icecream.");
}
}

Humain2.java

package com.cont.article;
public class Human2 extends Human
{
@Override
public void whatTheylike()
{
System.out.println("we like to have coffee.");
}
}

TestHuman.java

package com.cont.article;
public class TestHuman
{
public static void main(String[] args)
{
Human human1 = new Human1();
human1.whatTheylike();
Human human2 = new Human2();
human2.whatTheylike();
human1.doTheysleep();
human2.doTheysleep();
}
}

Sortie :

Classe abstraite en Java

Dans l'exemple ci-dessus, HUMAN est une classe abstraite qui définit les besoins, les goûts et les aversions communs d'un humain. Il existe différents types d’humains avec des goûts et des aversions différents. Ainsi, chaque humain peut fournir une implémentation spécifique de ce qu’il aime. Cela leur sera spécifique uniquement.

Le principal avantage de la classe abstraite est que nous avons une implémentation spécifique des méthodes en fonction d'une exigence, réduisant la redondance, augmentant la lisibilité du code, cachant l'implémentation des méthodes et fournissant une abstraction partielle.

Nous pouvons avoir un exemple supplémentaire pour comprendre quand utiliser les classes abstraites.

  • Nous devrions utiliser des classes abstraites pour partager des fonctionnalités communes avec différentes classes avec des implémentations spécifiques.
  • Dans les classes abstraites, les champs ne doivent pas être statiques et finaux ; on peut aussi avoir des méthodes concrètes, privées, publiques et protégées.

Disons que nous avons une classe Animal. Nous avons différents animaux sur Terre, et ils diffèrent tous les uns des autres dans un sens ou dans un autre. Néanmoins, il contiendra toutes les caractéristiques communes à tous.

Maintenant, cette classe Animal ne peut pas avoir de méthodes spécifiques pour chaque Animal. Ainsi, grâce au concept de classe abstraite, nous pouvons implémenter cette fonctionnalité sans code redondant.

Tous les animaux ont différents types de sons, habitudes, etc. Par exemple, les chiens, les chats, les éléphants et les collations ont des sons différents. Donc pour cela, nous pouvons avoir une méthode générique dans la classe parent à travers laquelle toutes les autres sous-classes ou classes enfants peuvent fournir leur implémentation spécifique.

Dans la classe parent, c'est-à-dire Animal, nous avons une méthode abstraite générique appelée leur Sound (). Ainsi, chaque classe enfant doit remplacer cette méthode et fournir son implémentation spécifique.

Classe abstraite et interface

Vous trouverez ci-dessous les distinctions entre la classe abstraite et l'interface :

  • La classe abstraite et l'interface sont toutes deux utilisées pour réaliser l'abstraction en Java. Cependant, une classe abstraite fournit une abstraction partielle, alors qu'une interface fournit une abstraction à 100 % ou complète.
  • Par défaut, les variables d'une interface sont définitives. Mais la classe abstraite contient également une variable non finale. De même, une classe abstraite peut également avoir une variable statique et non statique. Mais l'interface ne comprendra qu'une variable finale et statique.
  • Les variables membres d'une classe abstraite peuvent être privées, publiques et protégées, mais elles sont, par défaut, publiques dans l'interface.
  • Une classe abstraite peut étendre une autre classe Java et implémenter plusieurs interfaces, mais une interface ne peut étendre qu'une autre interface. De même, une classe abstraite peut fournir une implémentation d'une interface, mais une interface ne peut pas le faire.
  • Nous utilisons des mots-clés Implements et Extend pour implémenter et étendre des interfaces et des classes.
  • Nous pouvons modifier ou accéder aux variables non statiques et non finales d'une classe abstraite via la méthode.

Conclusion

Une classe abstraite est utilisée pour fournir une abstraction partielle. Une classe abstraite ne peut pas être instanciée à l'aide du mot-clé NEW. Une méthode abstraite n'a pas de corps et se termine toujours par un point-virgule (;). La classe abstraite contient des méthodes abstraites et non abstraites. La sous-classe d'une superclasse abstraite doit implémenter toutes les méthodes abstraites ; s'il ne le fournit pas, il doit alors se déclarer comme classe abstraite. Une sous-classe peut être abstraite même si la superclasse est concrète. Une classe non abstraite ne peut pas contenir de méthodes abstraites. De plus, la méthode abstraite n’est pas statique. Par conséquent, les classes abstraites ont également des méthodes abstraites et concrètes, elles ne peuvent donc pas fournir une abstraction à 100 %. Il s'agit d'un processus consistant à cacher la logique complexe à l'utilisateur final et à lui montrer uniquement les services.

D'un autre côté, une sous-classe peut être abstraite même si sa superclasse est concrète et peut également être utilisée comme type de données. Une classe abstraite peut avoir des champs et des méthodes statiques. Vous pouvez utiliser ces membres statiques avec une référence de classe.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn