Logo fr.removalsclassifieds.com

Différence entre la classe abstraite et l'interface en C # (avec table)

Table des matières:

Anonim

Lors de la conception d'applications ou du début d'une carrière en programmation, il est nécessaire de connaître la différence entre la classe abstraite et l'interface en C#. La classe abstraite et l'interface sont utilisées pour accomplir l'abstraction où l'on peut comprendre les méthodes abstraites. Bien qu'ils ne puissent pas être utilisés en même temps.

Les classes abstraites et les interfaces peuvent sembler similaires à certains égards, mais il existe des différences clés qui aident à déterminer quel est le meilleur choix pour quelqu'un d'atteindre un certain objectif lié à la programmation.

Il ne faut jamais avoir l'intention d'utiliser directement une classe abstraite. Cette classe doit avoir au moins une méthode abstraite. Et il sera marqué par le mot-clé ou le modificateur abstract dans la définition de class. D'un autre côté, une interface permet seulement à quelqu'un de définir des fonctionnalités. Il ne peut pas être mis en œuvre. Bien qu'une classe ne puisse développer qu'une seule classe abstraite, elle peut également tirer parti de diverses interfaces.

Classe abstraite vs interface en C#

Les différence entre la classe abstraite et l'interface en C # est que la fonction "principale" d'une classe abstraite est d'expliquer l'identité réelle d'une classe alors que la fonction principale d'une interface est d'expliquer les possibilités extérieures d'une classe. L'abstraction complète n'est pas fournie par une classe abstraite alors qu'une interface peut fournir une abstraction complète.

L'héritage multiple n'est pas possible dans une classe abstraite alors qu'une interface peut rendre l'héritage multiple possible.

Tableau de comparaison entre la classe abstraite et l'interface en C#

Paramètre de comparaison Classe abstraite Interface en C#
Fonctionnalité L'ajout d'une nouvelle méthode à une classe abstraite donnera la possibilité de fournir une implémentation par défaut et ainsi tout le code actuel fonctionnera correctement L'ajout d'une nouvelle méthode à une interface permettra de traquer toutes les implémentations de l'interface et de définir l'implémentation de la méthode récente
Héritage divers Une seule classe abstraite peut être héritée par une classe Plusieurs interfaces peuvent être héritées par une classe
Que contiennent-ils ? La classe abstraite contient le membre de données et les constructeurs Une interface en C# ne contient pas de membre de données et de constructeurs
Fournir Une classe abstraite peut fournir un code complet par défaut et/ou les détails qui doivent être remplacés Une interface en C# n'est capable de fournir aucun code, juste la signature
Vitesse de mouvement Une classe abstraite est rapide quand il s'agit de vitesse Une interface en C# a besoin de plus de temps pour obtenir la vraie méthode dans les classes correspondantes

Qu'est-ce que la classe abstraite en C# ?

Une classe abstraite est quelque chose qui ne peut être destiné qu'à être une classe de base d'autres classes. Ce sont des classes qui ont une ou plusieurs méthodes abstraites. Une méthode abstraite est connue comme une méthode annoncée, mais elle ne contient aucune implémentation.

Pour créer une classe, nous devons utiliser un modificateur « abstrait ». Ce modificateur indique qu'il pourrait y avoir quelques implémentations manquantes qui devront être mises en action dans la classe qui en est extraite. Les membres abstraits et non abstraits peuvent être contenus dans une classe abstraite.

Cette classe abstraite doit avoir au moins une méthode abstraite qui a déjà été discutée ci-dessus. Sans la méthode, nous ne pouvons pas déclarer cette classe comme une classe « abstraite ».

Parfois, les classes abstraites peuvent ne pas être instanciées et elles ont besoin de sous-classes pour fournir des implémentations pour les méthodes abstraites. Si nous créons une classe abstraite, nous créons une classe de base qui peut contenir une ou plusieurs méthodes terminées, mais nous trouverons au moins une ou plusieurs méthodes qui restent inachevées et déclarées abstraites.

Si toutes les méthodes d'une classe abstraite restent incomplètes, ce sera comme une interface. Fournir une définition d'une classe de base sur le fonctionnement d'un ensemble de classes dérivées, puis laisser les programmeurs remplir l'implémentation dans les classes dérivées est le véritable objectif d'une classe abstraite.

On peut aussi dire que le but d'une classe abstraite est de fournir une définition de classe de base.

Qu'est-ce que l'interface en C# ?

D'autre part, une interface n'est pas une classe qui n'a qu'une indication de fonctionnalité. Nous pouvons l'appeler un modèle sans implémentation. Théoriquement, c'est seulement une définition de méthodes qui a la déclaration des membres.

Nous pouvons le considérer comme une coquille vide qui ne contient pas l'implémentation de ses membres. L'interface est comme une classe de base abstraite qui n'aura que des membres abstraits tels que des méthodes, des indexeurs, des événements, des propriétés, etc.

L'instanciation directe n'est pas possible et ses membres peuvent être implémentés par n'importe quelle classe. De plus, diverses interfaces peuvent être implémentées par une classe, néanmoins, une classe ne peut obtenir qu'une seule classe. En d'autres termes, on peut dire qu'une interface n'a que la déclaration des membres et ne contient pas l'implémentation de ces membres.

Une classe implémente l'interface et doit fournir la définition des méthodes indiquées dans l'interface. Cela signifie qu'une interface apporte une structure standard que la classe dérivée devra suivre.

Principales différences entre la classe abstraite et l'interface en C#

Foire aux questions (FAQ) sur la classe abstraite et l'interface en C#

A quoi sert la classe abstraite en C# ?

C# est un langage de programmation orienté objet à usage général. C'est de Microsoft. L'objectif principal de C# est d'utiliser la puissance de calcul de C++ avec la facilité de programmation de Virtual Basic. Il est principalement basé sur C++ et contient également des fonctionnalités similaires à celles de Java.

Une classe abstraite est un moyen de réaliser l'abstraction en C# et elle ne peut pas être directement instanciée. La fonction de la classe abstraite est de créer des fonctionnalités ou de créer un comportement commun dont les sous-classes peuvent hériter, implémenter ou remplacer.

Il fournit essentiellement un modèle aux classes dérivées et donne des instructions sur ce qu'il faut implémenter par les classes dérivées lorsqu'elles héritent d'une classe abstraite.

Qu'est-ce que l'interface en C# et pourquoi est-elle utilisée ?

Une interface en C# peut être définie comme une définition de type comme une classe. Mais il ne fournit que des déclarations et est hérité par les classes et les structs.

Il est utilisé avec une classe pour définir un contrat (un accord sur ce qui est fourni par la classe à une application). Il ne déclare que les méthodes et les différentes propriétés et une classe dictera ce que la méthode fera réellement.

Il ne peut pas être instancié en tant qu'objet et n'est utilisé que comme une collection de méthodes et de déclarations de propriétés. Il définit quelles opérations peuvent être ou seront effectuées par une classe.

Qu'est-ce que le polymorphisme en C# ?

Le polymorphisme est généralement exprimé sous la forme d'une interface et de plusieurs fonctions. Le polymorphisme en C# signifie offrir la possibilité de prendre plusieurs formes. Après l'encapsulation et l'héritage, c'est un autre concept pilier de la programmation orientée objet. C# permet aux classes d'implémenter différentes méthodes qui sont généralement appelées avec le même nom.

Il existe deux types de polymorphismes en C#:

Conclusion

Comprendre la différence entre les deux est une tâche assez difficile. Nous pouvons combiner toutes les informations que nous pouvons trouver et cela ne suffira toujours pas. Théoriquement parlant, les deux sont les termes les plus importants de la programmation et sont assez similaires, mais en termes de fonctionnalité, ils diffèrent beaucoup.

Alors qu'une classe abstraite est un certain type de classe qui fonctionnera comme base pour d'autres classes, une interface sera juste un shell vide avec uniquement des déclarations de membres.

Les références

Différence entre la classe abstraite et l'interface en C # (avec table)