Qu'est-ce que la classe abstraite en Java?

  • Les classes abstraites sont comme toutes les autres classes normales en java. La principale différence entre la classe abstraite et la classe normale est de créer la classe abstraite dont nous avons besoin pour utiliser le mot-clé 'ABSTARCT'. Il s'agit d'une séparation de l'implémentation de classe.
  • Ils définissaient les caractéristiques très communes de ses sous-classes. Ce type de classe a fait référence à la classe abstraite.
  • Plus important encore, nous ne pouvons pas créer un objet d'une classe abstraite.
  • Les classes abstraites peuvent contenir des méthodes abstraites et non abstraites. Ils ne peuvent pas contenir un corps de la méthode abstraite, qui ne peut être fourni que par la sous-classe. Si la sous-classe ne fournit pas l'implémentation de la méthode abstraite, nous devons la faire ABSTRACT explicitement.
  • En d'autres termes, si une classe contient une méthode abstraite, elle doit alors se définir comme ABSTARCT.
  • En utilisant des classes abstraites, nous pouvons regrouper plusieurs classes java ensemble, cela optimise également le code et rend le code plus lisible et réduit la redondance. Il fournit également un modèle pour les futures classes.

Syntaxe de la 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 peut également avoir des méthodes avec implémentation.
  • Une classe abstraite est utilisée pour fournir la fonctionnalité la plus courante qui est spécifique aux différentes classes. Les sous-classes peuvent fournir une implémentation différente de ces méthodes abstraites en fonction de 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. Le constructeur de sous-classe peut accéder à un constructeur de super-classe pour initialiser sa variable qui pourrait être utilisée dans la sous-classe pour d'autres exigences.

Exemples de classe abstraite en Java

Human.java

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

Human1.java

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

Human2.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();
)
)

Production:

Dans l'exemple ci-dessus, nous avons HUMAN en tant que 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 différents goûts et dégoûts. Ainsi, chaque être humain peut fournir une mise en œuvre 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 selon une exigence qui conduit également à réduire la redondance, augmente la lisibilité du code, masque l'implémentation des méthodes et fournit donc une abstraction partielle.

Nous pouvons avoir un autre exemple pour comprendre quand utiliser des classes abstraites.

  • Nous devons utiliser une classe abstraite lorsque nous voulons partager des fonctionnalités communes entre différentes classes avec une implémentation spécifique.
  • Dans les classes abstraites, les champs ne doivent pas être statiques et définitifs, nous pouvons également définir des méthodes concrètes comme privées, publiques et protégées.

Disons que nous avons une classe animale. Il existe des variétés d'animaux que nous avons sur terre et elles sont toutes différentes les unes des autres dans un sens ou dans un sens majeur. Il contiendra toutes les caractéristiques communes à tous.

Maintenant, cette classe animale ne peut pas avoir de méthodes spécifiques à chaque animal. Ainsi, par le concept de classe abstraite, nous pouvons implémenter cette fonctionnalité sans code redondant.

Tous les animaux ont un type de son, des habitudes, etc. différents. Par exemple, les chiens, les chats, les éléphants et les collations ont tous un son différent. 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 propre implémentation spécifique.

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

Classe abstraite et interface?

  • La classe abstraite et l'interface sont utilisées pour réaliser l'abstraction en java. Une classe abstraite fournit une abstraction partielle tandis que l'interface fournit 100% ou une abstraction 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, la classe abstraite peut également avoir une variable statique et non statique. Mais Interface ne contiendra qu'une variable finale et statique.
  • Les variables membres d'une classe abstraite peuvent être comme privées, publiques, protégées, mais elles sont par défaut publiques dans le cas de 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. Une classe abstraite peut fournir une implémentation d'une interface mais une interface ne peut pas le faire.
  • Nous utilisons respectivement implements et extend mot-clé pour implémenter et étendre l'interface et les classes.
  • Grâce à la méthode, nous pouvons modifier ou accéder aux variables non statiques et non finales d'une classe abstraite.

Conclusion

  • Classe abstraite utilisée pour fournir une abstraction partielle. Une classe abstraite ne peut pas être instanciée à l'aide du nouveau mot clé.
  • 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 fournir une implémentation de toutes les méthodes abstraites si elle ne fournit pas alors elle doit se déclarer comme classe abstraite.
  • Une sous-classe peut être abstraite même si la super-classe 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, nous pouvons dire que les classes abstraites contiennent également des méthodes abstraites et concrètes, de sorte qu'elles ne peuvent pas fournir une abstraction à 100%. Il s'agit de cacher la logique complexe à l'utilisateur final et de ne lui montrer que les services. Une sous-classe peut être abstraite même si sa super-classe est concrète, et elle peut également être utilisée comme type de données.
  • Une classe abstraite peut avoir des champs statiques et des méthodes statiques. Vous pouvez utiliser ces membres statiques avec une référence de classe.

Articles recommandés

Ceci est un guide de la classe abstraite en Java. Nous discutons ici de la syntaxe et des exemples de classe abstraite en Java ainsi que de la classe abstraite et de l'interface. Vous pouvez également consulter les articles suivants pour en savoir plus -

  1. Interface Java vs classe abstraite
  2. BoxLayout en Java
  3. Qu'est-ce que Java SE?
  4. Qu'est-ce que l'héritage Java?
  5. Comment fonctionne la classe abstraite en PHP?
  6. Classe abstraite en C ++
  7. Guide de la méthode statique en PHP
  8. Présentation complète de la méthode statique JavaScript