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

Cet article vous aidera à comprendre la principale différence entre la classe abstraite et l'interface en java à l'aide d'un exemple de programme.

Les classes abstraites et les interfaces sont les deux principaux blocs de constructiondu . Bien que les deux soient principalement utilisés pour l'abstraction, ils sont très différents les uns des autres et ne peuvent pas être utilisés de manière interchangeable. Dans cet article, voyons quelle est la différence entre une classe abstraite et une interface en Java.



Les sujets abordés dans cet article sont les suivants:



Pour comprendre les différences entre la classe abstraite et l'interface dans , vous devez savoir ce qu'est une classe abstraite et ce qu'est une interface. Alors, commençons par discuter de ce que sont ces derniers.

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

Dans n'importe quel langage de programmation, abstraction signifie cacher les détails non pertinents à l'utilisateur pour se concentrer uniquement sur les détails essentiels pour augmenter l'efficacité, réduisant ainsi la complexité. En Java, l'abstraction est réalisée en utilisant classes abstraites . Une classe abstraite capture les caractéristiques communes des sous-classes et peut contenir ou non une méthode abstraite. Il ne peut pas être instancié mais ne peut être utilisé que comme superclasse par ses sous-classes. Voici un exemple de programme démontrant une classe abstraite:



Remarque: Une méthode abstraite , est une méthode qui n'est pas implémentée en place et ajouteincomplétude à classe .

comment utiliser java swing
package MyPackage // classe abstraite classe abstraite Animal {String AnimalName = '' Animal (String name) {this.AnimalName = name} // déclare des méthodes non abstraites // il a une implémentation par défaut public void BasicInfo (String details) {System. out.println (this.AnimalName + '' + details)} // méthodes abstraites qui seront // implémentées par sa (ses) sous-classe (s) abstract public void habitat () abstract public void respiration ()} class Terrestrial extends Animal {// constructor Terrestrial (String name) {super (name)} @Override public void habitat () {System.out.println ('Leave on land and')} @Override public void respiration () {System.out.println ('respire à travers les poumons ou la trachée. ')}} class Aquatic extends Animal {// constructeur Aquatic (String name) {super (name)} @Override public void habitat () {System.out.println (' It part in water and ') } @Override public void respiration () {System.out.println ('respire through branchies or their skin.')}} Class AbstractClassDemo {public static voi d main (String [] args) {// création de l'objet de la classe terrestre // et utilisation de la référence de classe animale. Animal object1 = new Terrestrial ('Humans') object1.BasicInfo ('sont des êtres terrestres, ils') object1.habitat () object1.respiration () System.out.println ('') // création des objets de la classe de cercle Animal object2 = new Aquatic ('Fishes') object2.BasicInfo ('sont des êtres aqautiques, ils') object2.habitat () object2.respiration ()}}

Production

Les humains sont des êtres terrestres, ils partent sur terre et respirent par les poumons ou la trachée. Les poissons sont des êtres aqautiques, ils partent dans l'eau et respirent à travers les branchies ou leur peau.

La Informations de base () est une méthode partagée par Terrestre et Aquatique Des classes. Puisque Classe animale ne peut pas être initié, nous créons les objets de Terrestre et Aquatique classes à des fins de programmation. Ensuite, nous avons des interfaces.



Interface en Java

Une autre façon de réaliser abstraction en Java consiste à utiliser les interfaces .Une interface est un ensemble de méthodes abstraites, elle n'a pas de , contrairement à une classe abstraite. Mais contrairement à la classe abstraite, une interface fournit une abstraction complète en Java. Il peut avoir à la fois des méthodes et des variables comme une classe. Cependant, les méthodes déclarées dans une interface sont abstraites par défaut.Voici un démonstration de la classe abstraite:

package MyPackage interface Animals {// méthodes abstraites void habitat () void respiration ()} class TerrestrialA implements Animals {String AnimalName = '' // constructeur TerrestrialA (String name) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'Leave on land and')} @Override public void respiration () {System.out.println ('respire through lungs or trachea.')}} Class AquaticA implements Animals {String AnimalName = '' // constructeur AquaticA (String name) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'Leave in water and')} @Override public void respiration () {System.out.println ('respire through branchies or their skin.')}} Class JavaInterfaceDemo {public static void main (String [] args) {// création de l'Object of Terrestrial class // et utilisation de la référence de classe Animal . Animals object1 = new TerrestrialA ('Humans') object1.habitat () object1.respiration () System.out.println ('') // création des objets de la classe de cercle Animals object2 = new AquaticA ('Fishes') object2.habitat () object2.respiration ()}}

Production

Les humains partent sur la terre ferme et respirent par les poumons ou la trachée. Les poissons partent dans l'eau et respirent par les branchies ou leur peau.

Si vous n'avez pas de code commun entre vos Des classes , alors vous pouvez opter pour l'interface. Une interface ressemble plus à un schéma directeur d'une classe puisqu'elle n'a pas de méthodes non abstraites.

À partir du contenu ci-dessus, vous avez peut-être remarqué la principale différence entre la classe abstraite et l'interface dans . Ce qui est, contrairement à la classe abstraite, une interface fournit des abstraction en Java. Maintenant, allons-y et énumérons d'autres différences.

Classe abstraite vs interface

Le tableau ci-dessous répertorie les principales différences entre la classe abstraite et l'interface.

Paramètre Classe abstraite Interface

Implémentation de la méthode par défaut

Il peut avoir une implémentation de méthode par défaut

Les interfaces fournissent une abstraction pure et ne peuvent pas du tout avoir d'implémentation

Variables

Il peut contenir des variables non finales.

Les variables déclarées dans une interface sont par défaut définitives

Mot-clé utilisé

Une classe abstraite peut être étendue à l'aide du mot-clé 'extend

L'interface doit être implémentée en utilisant le mot-clé ïmplements

Modificateurs d'accès

Pouvezont un modificateur public, protégé, privé et par défaut

Les méthodes d'interface sont par défaut publiques. vous ne pouvez utiliser aucun autre modificateur d'accès avec lui

Rapidité de mise en œuvre

C'est plus rapide que l'interface

Une interface est un peu plus lente et nécessite une indirection supplémentaire

Classe normale

Il ne peut étendre qu'une seule classe abstraite

Peut implémenter plusieurs interfaces

tutoriel Big Data pour les débutants

Constructeurs

Une classe abstraite peut avoir des constructeurs

Une interface ne peut pas avoir de constructeurs

Héritage multiple

Une classe abstraite peut étendre une autre classe et implémenter plusieurs interfaces Java

L'interface peut étendre une autre interface Java uniquement

Eh bien, maintenant vous les principales différences entre la classe abstraite et l'interface en Java. Mais, comment décidez-vous quand utiliser lequel parmi ces deux?

Quand utiliser la classe abstraite et quand utiliser l'interface?

Envisagez d'utiliser des classes abstraites dans les cas suivants:

  • Si vous avez des classes connexes qui doivent partager mêmes lignes de code
  • Lorsque vous souhaitez définir le champs non statiques ou non finaux
  • Quand il y améthodes ou champsou exiger modificateurs d'accès autre que public (comme protégé et privé)

Envisagez d'utiliser des interfaces dans les cas suivants:

  • Quand tu veux réaliser abstraction pure
  • Si vous souhaitez employer plusieurs , c'est à dire,implémenter plus d'une interface
  • Lorsque vous souhaitez spécifier le comportement d'un type de données particulier, sans vous soucier de qui implémente son comportement.

Cela nous amène à la fin de cet article. J'ai couvert l'une des questions Java les plus fréquemment posées dans Interview, à savoir la différence entre la classe abstraite et l'interface en Java.

Assurez-vous de pratiquer autant que possible et inversez votre expérience.

Vérifiez par Edureka, une entreprise d'apprentissage en ligne de confiance avec un réseau de plus de 250 000 apprenants satisfaits répartis dans le monde entier. Nous sommes là pour vous aider à chaque étape de votre voyage, pour devenir une autre question d'entrevue java, nous proposons un programme conçu pour les étudiants et les professionnels qui souhaitent devenir développeur Java.

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires de cette «interface java Map» article et nous vous répondrons dans les plus brefs délais.