Comparez les interfaces et les classes dans .NET
Les interfaces et les classes sont souvent utilisées dans notre développement quotidien. Quelle est la différence entre les deux ? Quels sont les avantages et les inconvénients ? L'article suivant vous présentera des informations pertinentes sur la différence entre les interfaces et les classes dans .NET. Les amis qui en ont besoin peuvent s'y référer.
Préface
Tout le monde devrait savoir que .Net fournit une interface différente de la définition de type de Class ou Struct. Dans certains cas, les interfaces semblent être identiques aux classes abstraites, c'est pourquoi certaines personnes pensent que les classes abstraites peuvent être complètement remplacées par des interfaces dans .Net. En fait, ce n’est pas le cas. Les interfaces et les classes abstraites ont chacune leurs propres forces et faiblesses, elles sont donc souvent utilisées en combinaison dans des applications pour se compléter. Pas grand chose à dire ci-dessous, jetons un œil à l’introduction détaillée.
Parlons ensuite de la différence entre les classes abstraites et les interfaces :
Différence 1. Les concepts exprimés par les deux sont différents. La classe abstraite est un degré élevé d'agrégation d'une classe de choses, donc pour les sous-classes qui héritent de classes abstraites, c'est une relation "oui" ; les interfaces définissent des spécifications comportementales, donc pour les sous-classes qui implémentent des interfaces, par rapport à l'interface, c'est " le comportement doit être complété en fonction de l'interface." Cela peut paraître un peu faux, mais voici un exemple. Par exemple, chien est un terme général désignant tous les animaux canins, le Pékinois est un chien et le Berger est un chien. Ensuite, les caractéristiques générales des chiens se retrouveront chez le Pékinois et le Berger. Ainsi, par rapport au Pékinois et au Berger, le chien appartient. le type abstrait de ce genre de chose ; quant à l'action d'« aboyer », les chiens peuvent aboyer et les oiseaux peuvent aussi aboyer. Évidemment, la première équivaut à la classe abstraite, tandis que la seconde fait référence à l’interface.
Différence 2 : lors de la définition d'une méthode de type pour une classe abstraite, la partie implémentation de la méthode peut ou non être donnée ; tandis que pour une interface, la partie implémentation ne peut être donnée pour aucune méthode qui y est définie.
Par exemple :
publicabstractclassAbsTest { publicvirtualvoidTest() { Debug.WriteLine("Test"); } publicabstractvoidNewTest(); } publicinterfaceITest { voidTest(); voidNewTest(); }
Différence trois, les classes d'héritage ont des implémentations différentes des méthodes impliquées dans les deux. La classe héritée n'a pas besoin de réécrire les méthodes abstraites définies par la classe abstraite, c'est-à-dire que les méthodes de la classe abstraite peuvent être étendues ; pour les méthodes ou attributs définis par la classe d'interface, les méthodes correspondantes doivent être données dans la classe héritée. Les méthodes et propriétés sont implémentées.
La quatrième différence est que dans une classe abstraite, si une nouvelle méthode est ajoutée, la classe héritée n'a pas besoin d'être utilisée pour aucun traitement pour les interfaces, la classe héritée doit être modifiée pour fournir une nouvelle méthode ; méthode définie.
Maintenant que nous connaissons la différence entre les deux, parlons des avantages des interfaces par rapport aux classes abstraites.
Avantage 1 : Les interfaces peuvent non seulement agir sur les types référence, mais également sur les types valeur. Quant aux classes abstraites, elles ne peuvent agir que sur des types référence.
Avantage 2 : l'héritage de type .Net ne peut être qu'un héritage unique, ce qui signifie qu'un type ne peut hériter que d'un seul type, mais peut hériter de plusieurs interfaces. En fait, je suis d'accord avec ce point. L'héritage multiple rendra l'arbre d'héritage déroutant.
Avantage 3 : étant donné que les interfaces définissent uniquement des propriétés et des méthodes et ont peu à voir avec les types réellement implémentés, les interfaces peuvent être réutilisées par plusieurs types. En revanche, la relation entre les classes abstraites et les classes héritées est plus étroite.
Avantage 4 : grâce aux interfaces, vous pouvez réduire les attributs et les méthodes exposés par un type, ce qui facilite la protection des objets de type. Lorsqu'un type qui implémente une interface peut contenir d'autres méthodes ou attributs, mais lorsque la méthode renvoie, il peut renvoyer l'objet d'interface de cette manière, l'extrémité appelante ne peut accéder aux éléments pertinents de l'objet que via les méthodes ou attributs fournis par. L'interface, qui peut protéger efficacement l'objet.
Avantage 5 : Réduisez les opérations de déballage des types valeur. Pour les données de type valeur définies par Struct, lorsqu'elles sont stockées dans une collection, elles doivent être déballées à chaque fois qu'elles sont retirées. Dans ce cas, la méthode de combinaison Struct+Interface est utilisée pour réduire l'opération de déballage.
Par rapport aux classes abstraites, les interfaces présentent de nombreux avantages, mais les interfaces ont une faiblesse fatale, c'est-à-dire que les méthodes et propriétés définies par l'interface ne peuvent être relatives qu'au type qui en hérite (à moins qu'elles ne soient modifiées dans le classe héritée) étiquette de fonction définie par l'interface), alors lorsqu'il s'agit de relations d'héritage multicouches, il est difficile de l'implémenter en utilisant uniquement les interfaces. Parce que si chaque type hérite de l'interface et l'implémente, sans compter que l'écriture de code est plus lourde, et parfois le résultat de l'exécution est erroné, surtout lorsque l'objet de sous-type est implicitement converti en objet de classe de base pour l'accès.
À l'heure actuelle, il doit être implémenté à l'aide d'interfaces combinées à des méthodes virtuelles. En fait, en héritage, faut-il utiliser des interfaces ou des classes abstraites ? L'interface est fixe et conventionnelle, donc l'implémentation des méthodes et propriétés correspondantes de l'interface doit être fournie dans la classe héritée. Pour les classes abstraites, l'implémentation de la méthode de définition de la classe abstraite traverse tout l'arbre d'héritage, donc l'implémentation ou la réécriture des méthodes est incertaine. Par conséquent, relativement parlant, les classes abstraites sont plus flexibles que les interfaces.
Un simple tableau de comparaison entre les deux est donné ci-dessous.
Interface |
Classe abstraite |
|
Héritage multiple |
Supporté |
Non pris en charge |
Restrictions de type |
Non |
Oui, il ne peut s'agir que d'une méthode de type référence |
méthode implémentation |
L'implémentation de la méthode doit être donnée dans le type hérité |
Il n'est pas nécessaire de la donner dans la classe héritée |
Extensibilité |
Compliqué |
Relativement flexible |
L'héritage multi-niveaux |
est plus gênant et nécessite l'utilisation de fonctions virtuelles |
qui sont plus flexible |
En général, les interfaces et les classes abstraites sont des moyens de langage fournis par .Net pour mieux réaliser la relation d'héritage entre les types, et les deux sont quelque peu complémentaires de l'un l'autre. Par conséquent, je n'insiste pas sur ce qu'il faut utiliser et sur ce qu'il ne faut pas utiliser. La clé du problème est de savoir comment appliquer raisonnablement ces deux méthodes au programme.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

De nos jours, les performances et les fonctions des téléphones mobiles deviennent de plus en plus puissantes. Presque tous les téléphones mobiles sont équipés de fonctions NFC pratiques pour faciliter le paiement mobile et l'authentification de l'identité des utilisateurs. Cependant, certains utilisateurs de Xiaomi 14Pro ne savent peut-être pas comment activer la fonction NFC. Ensuite, permettez-moi de vous le présenter en détail. Comment activer la fonction nfc sur Xiaomi 14Pro ? Étape 1 : Ouvrez le menu des paramètres de votre téléphone. Étape 2 : Recherchez et cliquez sur l'option « Connecter et partager » ou « Sans fil et réseaux ». Étape 3 : Dans le menu Connexion et partage ou Sans fil et réseaux, recherchez et cliquez sur « NFC et paiements ». Étape 4 : Recherchez et cliquez sur « NFC Switch ». Généralement, la valeur par défaut est désactivée. Étape 5 : Sur la page du commutateur NFC, cliquez sur le bouton du commutateur pour l'activer.

WPS est notre logiciel bureautique couramment utilisé lors de l'édition d'articles longs, les polices sont souvent trop petites pour être clairement visibles, c'est pourquoi les polices et l'ensemble du document sont ajustés. Par exemple : ajuster l'espacement des lignes du document rendra l'ensemble du document très clair. Je suggère à tous les amis d'apprendre cette étape de l'opération. Je la partagerai avec vous aujourd'hui. Les étapes de l'opération spécifiques sont les suivantes, venez jeter un oeil ! Ouvrez le fichier texte WPS que vous souhaitez ajuster, recherchez la barre d'outils de configuration des paragraphes dans le menu [Démarrer] et vous verrez la petite icône de configuration de l'espacement des lignes (représentée par un cercle rouge dans l'image). 2. Cliquez sur le petit triangle inversé dans le coin inférieur droit du paramètre d'espacement des lignes et la valeur d'espacement des lignes correspondante apparaîtra. Vous pouvez choisir 1 à 3 fois l'espacement des lignes (comme indiqué par la flèche sur la figure). 3. Ou cliquez avec le bouton droit sur le paragraphe et il apparaîtra.

Lorsque nous assemblons l'ordinateur, bien que le processus d'installation soit simple, nous rencontrons souvent des problèmes de câblage. Souvent, les utilisateurs branchent par erreur la ligne d'alimentation du radiateur du processeur au SYS_FAN. Bien que le ventilateur puisse tourner, il peut ne pas fonctionner lorsque le ventilateur fonctionne. L'ordinateur est allumé. Il y aura une erreur F1 "CPUFanError", qui empêchera également le refroidisseur du processeur d'ajuster intelligemment la vitesse. Partageons les connaissances communes sur les interfaces CPU_FAN, SYS_FAN, CHA_FAN et CPU_OPT sur la carte mère de l'ordinateur. Science populaire sur les interfaces CPU_FAN, SYS_FAN, CHA_FAN et CPU_OPT sur la carte mère de l'ordinateur 1. CPU_FANCPU_FAN est une interface dédiée pour le radiateur du processeur et fonctionne à 12 V.

Faire glisser l'écran dans les airs est une fonctionnalité de Huawei très appréciée dans la série Huawei mate60. Cette fonctionnalité utilise le capteur laser du téléphone et la caméra de profondeur 3D de la caméra frontale pour compléter une série de fonctions qui ne nécessitent pas de fonction. fonction de toucher l'écran, comme faire glisser TikTok depuis les airs, mais comment utiliser le Huawei Pocket 2 pour faire glisser TikTok depuis les airs ? Comment faire des captures d'écran depuis les airs avec Huawei Pocket2 ? 1. Ouvrez les paramètres de Huawei Pocket2. 2. Sélectionnez ensuite [Accessibilité]. 3. Cliquez pour ouvrir [Perception intelligente]. 4. Activez simplement les commutateurs [Air Swipe Screen], [Air Screenshot] et [Air Press]. 5. Lorsque vous l'utilisez, vous devez le tenir à 20 ~ 40 cm de l'écran, ouvrir votre paume et attendre que l'icône de la paume apparaisse sur l'écran.

Différences et analyse comparative du langage C et de PHP Le langage C et PHP sont tous deux des langages de programmation courants, mais ils présentent des différences évidentes sur de nombreux aspects. Cet article procédera à une analyse comparative du langage C et de PHP et illustrera les différences entre eux à travers des exemples de code spécifiques. 1. Syntaxe et utilisation : Langage C : Le langage C est un langage de programmation orienté processus, principalement utilisé pour la programmation au niveau système et le développement embarqué. La syntaxe du langage C est relativement simple et de bas niveau, peut exploiter directement la mémoire, et est efficace et flexible. Le langage C met l'accent sur l'exhaustivité du programme pour le programmeur

Le développement des technologies d’intelligence artificielle (IA) bat son plein aujourd’hui et elles ont montré un grand potentiel et une grande influence dans divers domaines. Aujourd'hui, Dayao partagera avec vous 4 cadres de projets liés au modèle d'IA open source .NET LLM, dans l'espoir de vous fournir une référence. https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel est un kit de développement logiciel (SDK) open source conçu pour intégrer de grands modèles de langage (LLM) tels qu'OpenAI, Azure

Selon les statistiques du 2 mars, la TVL totale du réseau de deuxième couche de Bitcoin, MerlinChain, a atteint 3 milliards de dollars. Parmi eux, les actifs écologiques Bitcoin représentaient 90,83 %, dont BTC d’une valeur de 1,596 milliard de dollars et les actifs BRC-20 d’une valeur de 404 millions de dollars. Le mois dernier, le TVL total de MerlinChain a atteint 1,97 milliard de dollars américains dans les 14 jours suivant le lancement des activités de jalonnement, dépassant Blast, qui a été lancé en novembre de l'année dernière et est également le plus récent et tout aussi accrocheur. Le 26 février, la valeur totale des NFT dans l'écosystème MerlinChain a dépassé 420 millions de dollars américains, devenant ainsi le projet de chaîne publique avec la valeur marchande NFT la plus élevée après Ethereum. Introduction du projet MerlinChain est un support OKX

Le progrès des temps a rendu les revenus de nombreuses personnes de plus en plus élevés, et les téléphones mobiles qu'ils utilisent habituellement seront changés fréquemment. Le Xiaomi Mi 14 Ultra récemment lancé par Xiaomi doit être familier aux utilisateurs. La configuration des performances est très élevée, et elle. peut offrir aux utilisateurs plus Afin d'offrir une expérience confortable et fluide, les nouveaux téléphones mobiles rencontreront inévitablement de nombreuses fonctions qui ne sont pas utilisées. Par exemple, comment utiliser l'extension d'image intelligente Xiaomi 14UltraAI ? Venez jeter un oeil au tutoriel d'utilisation ci-dessous ! Comment utiliser l'extension d'image intelligente Xiaomi 14UltraAI ? Ouvrez d’abord Xiaomi 14Ultra, entrez dans l’album photo, sélectionnez l’image que vous souhaitez agrandir et entrez dans l’option d’édition de l’album photo. Cliquez sur Rotation de recadrage, cliquez sur Recadrer et cliquez sur Développement intelligent dans la sélection qui apparaît. Enfin, choisissez la manière d'agrandir l'image en fonction de vos propres besoins.
