Quelle est la différence entre la classe abstraite et l'interface dans Java

Quelle est la différence entre la classe abstraite et l'interface dans Java

Java fournit plusieurs façons de fournir une abstraction de données, comme les interfaces Java et les classes abstraites de Java. L'interface et la classe abstraite assurent la sécurité en cachant les détails de l'implémentation interne et en affichant / ne mettant en évidence les détails nécessaires. Cependant, il existe de nombreuses similitudes et distinctions entre les classes abstraites et les interfaces.

Ce message vous aidera dans les aspects ci-dessous des interfaces Java et des cours abstraits:

  1. Qu'est-ce qu'une interface Java.
  2. Qu'est-ce qu'une classe abstraite Java.
  3. Comparaison basée sur des similitudes.
  4. Java Abstract Class vs Java Interface.

Alors, commençons!

Qu'est-ce qu'une interface Java

Il s'agit d'un modèle pour une classe qui contient des méthodes abstraites et des variables statiques / finales. En Java, les interfaces ne fournissent que la déclaration de méthode, tandis que les classes enfants / implémentées fournissent la définition de la méthode.

Qu'est-ce qu'une classe abstraite Java

Toute classe Java qui a au moins une méthode abstraite (seule déclaration de méthode) est connue comme une classe abstraite en Java.

Comparaison basée sur des similitudes

Certains aspects importants des interfaces Java et des classes abstraits sont répertoriés ci-dessous:

  • En Java, nous ne pouvons pas créer l'objet / instance des deux interfaces ou des classes abstraites.
  • Les deux ne fournissent que les détails nécessaires à l'utilisateur.
  • Les deux fournissent une abstraction.
  • Les deux peuvent avoir des méthodes / fonctions abstraites.
  • Les deux masquent les informations / détails de mise en œuvre des utilisateurs.

Java Abstract Class vs Java Interface

Les mots clés «abstraits» et «interface» sont utilisés en Java pour créer / déclarer les classes abstraites et les interfaces respectivement.

Dans les interfaces, tous les membres sont considérés comme publics par défaut, il n'est donc pas nécessaire de spécifier le modificateur d'accès pour les membres des interfaces. Alors que dans les classes abstraites, il n'y a pas de restriction de ce type et donc un modificateur d'accès peut être utilisé pour les membres de classes abstraites telles que le public, la protection, etc.

La syntaxe de base d'une classe abstraite et d'une interface est indiquée dans les extraits divisés:

Classe abstraite

Classe abstraite publique classname
Public Abstract void Methodname ();

Interface

interface publique interfacename
void methodname ();

Les interfaces doivent avoir toutes les méthodes abstraites, tandis que les classes abstraites peuvent avoir des méthodes abstraites et non abstraites.

L'interface ne peut avoir que des membres statiques, tandis que les classes abstraites peuvent avoir des membres statiques et non statiques.

Les interfaces n'ont que des membres «finaux» (inchangeables) tandis que les classes abstraites peuvent avoir des membres finaux et non finaux.

Les interfaces n'ont aucun constructeur tandis que les classes abstraites ont des constructeurs définis par l'utilisateur ou par défaut.

L'héritage multiple peut être réalisé à l'aide d'interfaces tandis que les classes abstraites ne prennent pas en charge l'héritage multiple.

En Java, la classe abstraite peut hériter d'une autre classe et peut implémenter de nombreuses interfaces, en revanche, une interface Java peut prolonger une autre interface uniquement.

Exemple

L'exemple donné ci-dessous vous permettra de comprendre comment les interfaces et les classes abstraites fonctionnent en Java:

interface firstInterface
void méthodone ();
void methodtwo ();
vide methodthree ();

Résumé classe AbstractClass implémente FirstInterface
Méthode du public public Three ()
Système.dehors.println ("classe abstraite implémentation de méthode Three");


classe normalClass étend AbstractClass
public void méthodone ()
Système.dehors.println ("Implémentation de MéthodOne");

public void methodtwo ()
Système.dehors.println ("implémentation methodtwo");

Méthode du public public Three ()
Système.dehors.println ("Implementation MethodThree");


classe publique InterfaceExample
public static void main (String [] args)
FirstInterface obj = new classthree ();
obj.MethodOne ();
obj.MethodTwo ();
obj.MethodTe ();

Dans cet exemple, nous avons créé une interface «FirstInterface», une classe abstraite «AbstractClass», et deux autres classes Java normales et effectué les fonctionnalités suivantes:

  • Le FirstInterface contient trois méthodes abstraites.
  • Le AbstractClass met en oeuvre FirstInterface et remplace le MethodETre ().
  • Le Classe normale étend le AbstractClass et et remplace le MethodOne () et MethodTwo () de FirstInterface.

Le Interfacexample est la classe principale d'où nous avons créé la méthode principale et invoqué toutes les méthodes de FirstInterface:

La sortie a vérifié le fonctionnement du programme Java donné ci-dessus.

Conclusion

En Java, l'abstraction peut être obtenue en utilisant des classes abstraites et des interfaces, et les deux ne peuvent pas être instanciées. Cependant, il existe plusieurs distinctions entre les classes abstraites et les interfaces. Par exemple, les interfaces doivent avoir toutes les méthodes abstraites tandis que les classes abstraites peuvent avoir des méthodes abstraites et non abstraites; À l'aide d'interfaces, l'héritage multiple peut être réalisé tandis que les classes abstraites ne prennent pas en charge l'héritage multiple, etc. Ce message a expliqué divers aspects des classes abstraites et des interfaces à l'aide d'exemples appropriés.