Différence Classe abstraite et classe concrète

Anonim

La plupart des langages de programmation modernes orientés objet comme Java et C # sont basés sur des classes. Ils réalisent les concepts orientés objet tels que l'encapsulation, l'héritage et le polymorphisme à travers l'utilisation de classes. Les classes sont une représentation abstraite d'objets du monde réel. Les classes peuvent être soit concrètes soit abstraites en fonction du niveau de mise en œuvre des fonctionnalités de leurs méthodes. Une classe concrète met complètement en œuvre toutes ses méthodes. Une classe abstraite peut être considérée comme une version limitée d'une classe régulière (concrète), où elle peut contenir des méthodes partiellement implémentées. Typiquement, les classes concrètes sont appelées (juste) classes.

Qu'est-ce que la classe du béton?

La classe par défaut est une classe concrète. Le mot clé class est utilisé pour définir des classes (par exemple Java). Et généralement, ils sont simplement appelés classes (sans l'adjectif concret). Les classes concrètes représentent la représentation conceptuelle des objets du monde réel. Les classes ont des propriétés appelées attributs. Les attributs sont implémentés en tant que variables globales et d'instance. Les méthodes des classes représentent ou définissent le comportement de ces classes. Les méthodes et les attributs des classes sont appelés les membres de la classe. Généralement, l'encapsulation est réalisée en rendant les attributs privés, tout en créant des méthodes publiques qui peuvent être utilisées pour accéder à ces attributs. Un objet est l'instance d'une classe. L'héritage permet à l'utilisateur d'étendre des classes (appelées sous-classes) d'autres classes (appelées super classes). Le polymorphisme permet au programmeur de substituer un objet d'une classe à la place d'un objet de sa super classe. Typiquement, les noms trouvés dans la définition du problème deviennent directement des classes dans le programme. Et de même, les verbes deviennent des méthodes. Public, private et protected sont les modificateurs d'accès typiques utilisés pour les classes.

Qu'est-ce que la classe abstraite?

Les classes abstraites sont déclarées à l'aide d'un mot clé abstrait (par exemple, en Java). En règle générale, les classes abstraites, également appelées classes de base abstraites (ABC), ne peuvent pas être instanciées (une instance de cette classe ne peut pas être créée). Ainsi, les classes abstraites ne sont significatives que si le langage de programmation prend en charge l'héritage (possibilité de créer des sous-classes à partir de l'extension d'une classe). Les classes abstraites représentent généralement un concept abstrait ou une entité avec une implémentation partielle ou non. Par conséquent, les classes abstraites agissent en tant que classes parentes à partir desquelles les classes enfants sont dérivées de sorte que la classe enfant partage les fonctionnalités incomplètes de la classe parente et que des fonctionnalités puissent être ajoutées pour les compléter.

Les classes abstraites peuvent contenir des méthodes abstraites. Les sous-classes qui étendent une classe abstraite peuvent implémenter ces méthodes abstraites (héritées).Si la classe enfant implémente toutes ces méthodes abstraites, elle devient une classe concrète. Mais si ce n'est pas le cas, la classe enfant devient aussi une classe abstraite. Tout ce que cela signifie, c'est que lorsque le programmeur nomme une classe comme un résumé, elle dit que la classe sera incomplète et qu'elle aura des éléments qui doivent être complétés par les sous-classes d'héritage. C'est un bon moyen de créer un contrat entre deux programmeurs, ce qui simplifie les tâches de développement de logiciels. Le programmeur, qui écrit du code pour hériter, doit suivre les définitions de la méthode exactement (mais bien sûr peut avoir sa propre implémentation).

Quelle est la différence entre la classe abstraite et la classe béton?

Les classes abstraites ont généralement une implémentation partielle ou non. En revanche, les classes concrètes ont toujours une mise en œuvre complète de son comportement. Contrairement aux classes concrètes, les classes abstraites ne peuvent pas être instanciées. Par conséquent, les classes abstraites doivent être étendues afin de les rendre utiles. Les classes abstraites peuvent contenir des méthodes abstraites, mais les classes concrètes ne le peuvent pas. Quand une classe abstraite est étendue, toutes les méthodes (à la fois abstraites et concrètes) sont héritées. La classe héritée peut implémenter n'importe laquelle ou toutes les méthodes. Si toutes les méthodes abstraites ne sont pas implémentées, cette classe devient aussi une classe abstraite.