Différence entre la classe abstraite et l'interface

Différence entre la classe abstraite et l'interface

Classe abstraite vs. Interface

La classe (ou type) abstrait est un type de système de type nominatif déclaré par le programme. Bien que le nom implique tel, une classe abstraite peut ou non inclure des méthodes ou des propriétés abstraites. La classe de distinction fait référence à différentes constructions linguistiques qui peuvent être utilisées pour mettre en œuvre des types abstraits. Les classes abstraites peuvent être caractérisées par un problème de conception qui conserve la meilleure programmation orientée objet et par leurs natures inachevées.

Une interface est un type abstrait que les classes doivent implémenter pour spécifier une interface (génériquement parlant). Les interfaces ne peuvent contenir que des signatures de méthode et des déclarations constantes (statiques et finales), jamais définitions de méthode. Les interfaces simulent plusieurs héritages et sont utilisés pour coder des similitudes partagées entre différents types de classes.

Les types abstraits peuvent être créés, signifiés ou simulés de plusieurs manières différentes. Un programmeur peut signifier des types abstraits en utilisant explicitement le mot-clé Résumé, en incluant une ou plusieurs méthodes dans la définition de la classe, héritant d'un autre type abstrait sans remplacer les fonctionnalités manquantes nécessaires pour compléter la définition de la classe, ou en envoyant une méthode particulière à l'objet orienté vers l'objet, Langue de programmation connue sous le nom de celle-ci qui n'implémente pas directement la méthode.

Les interfaces peuvent être définies à l'aide de méthodes abstraites. Les classes peuvent également être implémentées dans les interfaces. Si une classe implémente une interface et n'implémente pas toutes ses méthodes, le résumé du signifiant doit être utilisé, sinon ce signifiant n'est pas nécessaire (car toutes les interfaces sont intrinsèquement abstraites). Les classes peuvent également implémenter plusieurs interfaces.

Alors que les interfaces sont utilisées pour spécifier des interfaces génériques, les types abstraits peuvent être utilisés pour définir et appliquer le protocole (qui est un ensemble d'opérations que tous les objets qui implémentent le protocole souhaité doivent prendre en charge). Les types abstraits ne se produisent pas dans les langues sans sous-type. En tant que tels, les sous-types sont obligés d'implémenter toutes les fonctionnalités nécessaires, garantissant l'exactitude de l'exécution du programme. Il existe plusieurs façons dont les types abstraits peuvent être créés: les classes de base abstraites complètes sont des classes qui sont explicitement déclarées comme des méthodes abstraites ou contiennent des méthodes abstraites (non implémentées); Les systèmes d'objets LISP courants comprennent des mixins basés sur le système des saveurs; Java, bien sûr; et les traits, qui agit comme une extension à Smalltalk.

Résumé:
1. Les classes (ou types) abstraites déclarent les programmes; Les interfaces sont des types abstraits que toutes les classes doivent implémenter afin de spécifier leur interface.
2. Les types abstraits peuvent être signifiés en utilisant explicitement le mot clé; Les interfaces sont intrinsèquement abstraites, n'ont donc pas besoin d'être signifiées en utilisant le mot clé (sauf si une classe spécifique implémente une interface mais n'implémente pas toutes ses méthodes).