Maison >Java >javaDidacticiel >Quelle est la différence entre une classe abstraite et une interface en Java ?
En Java, les classes abstraites et les interfaces sont utilisées pour réaliser l'abstraction, alors quelle est la différence entre elles ? L’article suivant vous le présentera. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.
Classe abstraite
La classe abstraite est utilisée pour capturer les caractéristiques communes des sous-classes, c'est-à-dire ce qu'elles ont en commun ; par exemple : les voitures, les vélos et les scooters électriques sont tous des voitures et peuvent avoir une classe abstraite commune : Véhicule. Les classes abstraites ne peuvent pas être instanciées, ne peuvent pas être utilisées pour créer des objets et ne peuvent être utilisées que comme superclasses pour les sous-classes.
Interface
Une interface est un ensemble de méthodes abstraites. Si une classe implémente une interface, alors elle hérite de toutes les méthodes abstraites de cette interface.
Remarque : Une méthode abstraite est une méthode spéciale qui n'a que des déclarations mais aucune implémentation spécifique.
L'interface n'est qu'un formulaire, elle ne peut rien faire par elle-même ; si vous souhaitez implémenter une interface, vous devez vous assurer d'implémenter toutes les méthodes dans cette interface.
La différence entre les classes abstraites et les interfaces :
1. Une classe abstraite peut avoir à la fois des méthodes abstraites et concrètes alors qu'une interface ne peut avoir que des méthodes abstraites ; sont des méthodes abstraites Collection de (à partir de Java 8, il peut également avoir des méthodes par défaut et statiques).
2. Les classes abstraites ne prennent pas en charge l'héritage multiple. Une seule classe ou une classe abstraite peut être étendue à la fois. Les interfaces prennent en charge l'héritage multiple et n'importe quel nombre d'interfaces peuvent être étendues à la fois.
3. Les classes abstraites peuvent avoir des variables finales, non finales, statiques et non statiques. Les interfaces n'ont que des variables statiques et finales.
4. Une classe abstraite peut étendre une autre classe concrète (régulière) ou classe abstraite et implémenter une ou plusieurs interfaces Java. Une interface ne peut qu'étendre une autre interface Java et les interfaces ne peuvent pas implémenter de classes abstraites.
5. Dans une classe abstraite, le mot-clé : "abstract" est requis pour déclarer une méthode comme abstraite. Dans l'interface, le mot-clé : "abstract" est facultatif et sert à déclarer la méthode comme abstraite
7. Vous pouvez utiliser le mot-clé "extends" pour étendre la classe abstraite. Une classe d'interface peut être implémentée à l'aide du mot-clé "impléments".
8. Les classes abstraites Java peuvent avoir des méthodes abstraites protégées et publiques, et peuvent avoir des membres de classe, tels que privés, protégés, etc. Par défaut, les membres d'une interface Java sont publics et une interface ne peut avoir que des méthodes abstraites publiques.
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!