Interface vs classe abstraite en Java :quelle est la différence ?
Qu'est-ce que l'interface ?
L'interface est un plan qui peut être utilisé pour implémenter une classe. L'interface ne contient pas de méthodes concrètes (méthodes qui ont du code). Toutes les méthodes d'une interface sont des méthodes abstraites.
Une interface ne peut pas être instanciée. Cependant, les classes qui implémentent des interfaces peuvent être instanciées. Les interfaces ne contiennent jamais de variables d'instance, mais elles peuvent contenir des variables finales statiques publiques (c'est-à-dire des variables de classe constantes)
Qu'est-ce qu'une classe abstraite ?
Une classe qui a le mot clé abstract dans sa déclaration est appelée classe abstraite. Les classes abstraites doivent avoir au moins une méthode abstraite. , c'est-à-dire des méthodes sans corps. Il peut avoir plusieurs méthodes concrètes.
Les classes abstraites vous permettent de créer des plans pour des classes concrètes. Mais la classe qui hérite doit implémenter la méthode abstraite.
Les classes abstraites ne peuvent pas être instanciées.
Raisons importantes pour l'utilisation des interfaces
- Les interfaces sont utilisées pour réaliser l'abstraction.
- Conçu pour prendre en charge la résolution de méthode dynamique au moment de l'exécution
- Cela vous aide à obtenir un couplage lâche.
- Vous permet de séparer la définition d'une méthode de la hiérarchie d'héritage
Raisons importantes pour l'utilisation de la classe abstraite
- Les classes abstraites offrent des fonctionnalités par défaut pour les sous-classes.
- Fournit un modèle pour les futurs cours spécifiques
- Vous aide à définir une interface commune pour ses sous-classes
- La classe abstraite permet la réutilisation du code.
Interface vs. Classe abstraite
Une classe abstraite vous permet de créer des fonctionnalités que les sous-classes peuvent implémenter ou remplacer, tandis qu'une interface vous permet uniquement d'énoncer des fonctionnalités mais pas de les implémenter. Une classe ne peut étendre qu'une seule classe abstraite alors qu'une classe peut implémenter plusieurs interfaces.
Paramètres | Interface | Cours abstrait |
---|---|---|
Vitesse | Lent | Rapide |
Héritages multiples | Mettre en place plusieurs interfaces | Une seule classe abstraite |
Structure | Méthodes abstraites | Méthodes abstraites et concrètes |
Quand utiliser | Amélioration future | Pour éviter l'indépendance |
Héritage/ Implémentation | Une classe peut implémenter plusieurs interfaces | La classe ne peut hériter que d'une seule classe abstraite |
Mise en œuvre par défaut | Lors de l'ajout de nouvelles choses à l'interface, c'est un cauchemar de trouver tous les implémenteurs et d'implémenter des choses nouvellement définies. | En cas de classe abstraite, vous pouvez profiter de l'implémentation par défaut. |
Modificateurs d'accès | L'interface n'a pas de modificateurs d'accès. Tout ce qui est défini à l'intérieur de l'interface est considéré comme un modificateur public. | La classe abstraite peut avoir un modificateur d'accès. |
Quand utiliser | Il est préférable d'utiliser l'interface lorsque plusieurs implémentations ne partagent que la signature de méthode. Hiérarchie polymorphe des types de valeurs. | Il doit être utilisé lorsque plusieurs implémentations du même type partagent un comportement commun. |
Champs de données | l'interface ne peut pas contenir de champs de données. | la classe peut avoir des champs de données. |
Héritage multiple par défaut | Une classe peut implémenter de nombreuses interfaces. | Une classe hérite d'une seule classe abstraite. |
Mise en œuvre | Une interface est abstraite de sorte qu'elle ne peut fournir aucun code. | Une classe abstraite peut donner un code complet par défaut qui doit être remplacé. |
Utilisation des modificateurs d'accès | Vous ne pouvez pas utiliser de modificateurs d'accès pour la méthode, les propriétés, etc. | Vous pouvez utiliser une classe abstraite qui contient des modificateurs d'accès. |
Utilisation | Les interfaces aident à définir les capacités périphériques d'une classe. | Une classe abstraite définit l'identité d'une classe. |
Champs définis | Aucun champ ne peut être défini | Une classe abstraite vous permet de définir à la fois des champs et des constantes |
Héritage | Une interface peut hériter de plusieurs interfaces mais ne peut pas hériter d'une classe. | Une classe abstraite peut hériter d'une classe et de plusieurs interfaces. |
Constructeur ou destructeurs | Une interface ne peut pas déclarer de constructeurs ou de destructeurs. | Une classe abstraite peut déclarer des constructeurs et des destructeurs. |
Limite d'extensions | Il peut étendre n'importe quel nombre d'interfaces. | Il ne peut étendre qu'une classe ou une classe abstraite à la fois. |
Mot-clé abstrait | Dans un mot-clé d'interface abstrait, est facultatif pour déclarer une méthode en tant qu'abstrait. | Dans une classe abstract, le mot clé abstract est obligatoire pour déclarer une méthode en tant qu'abstract. |
Type de classe | Une interface ne peut avoir que des méthodes abstraites publiques. | Une classe abstraite a des méthodes abstraites protégées et publiques. |
Exemple de code pour l'interface et la classe abstraite en Java
Voici un exemple de code pour créer une interface et une classe abstraite en Java
Syntaxe d'interface
interface name{ //methods }
Exemple d'interface Java :
interface Pet { public void test(); } class Dog implements Pet { public void test() { System.out.println("Interface Method Implemented"); } public static void main(String args[]) { Pet p = new Dog(); p.test(); } }
Syntaxe de classe abstraite
abstract class name{ // code }
Exemple de classe abstraite :
abstract class Shape { int b = 20; abstract public void calculateArea(); } public class Rectangle extends Shape { public static void main(String args[]) { Rectangle obj = new Rectangle(); obj.b = 200; obj.calculateArea(); } public void calculateArea() { System.out.println("Area is " + (b * b)); } }
Java
- Soudage à main levée vs soudage à main levée :quelle est la différence ?
- Fer contre acier :quelle est la différence ?
- Clous coupés ou clous métalliques :quelle est la différence ?
- Découpe plasma vs laser :quelle est la différence ?
- Tour vs fraisage :quelle est la différence ?
- Fraisage vs meulage :quelle est la différence ?
- Classe abstraite Java et méthodes abstraites
- InterfaceJava
- Java - Abstraction