Maison  >  Article  >  développement back-end  >  Comparez les différences entre la syntaxe orientée objet en C# et JAVA

Comparez les différences entre la syntaxe orientée objet en C# et JAVA

巴扎黑
巴扎黑original
2017-09-06 14:01:342160parcourir

L'orientation objet est une idée de développement. La chose la plus importante à retenir est que tout est un objet. Afin de rendre le programme mieux compris et écrit, les manières et les idées de décrire les choses dans la vie réelle y sont intégrées, ce qui devient une pensée orientée objet. Pour intégrer les choses de la vie dans un programme, une description est nécessaire. La description est divisée en deux aspects : les caractéristiques et le comportement. Les caractéristiques et les comportements des différentes catégories d'objets présentent d'énormes différences afin de mieux formuler une manière de décrire chaque type de choses. , alors Le concept de classe extrait du monde de la programmation est équivalent au concept de type dans la vie. Chaque chose devrait avoir un type. Ensuite, si les choses de la vie sont classées selon différents aspects, elles peuvent être classées dans différentes catégories. Tous les cours de programmation sont également des choses que tout le monde considère comme raisonnables et qui comportent une incertitude et un caractère aléatoire considérables.

La composition d'une classe :

Une classe en Java contient des attributs et des méthodes. Les attributs sont des variables dans une classe, qui peuvent être divisées en variables statiques, variables d'instance (variables globales) et variables locales (existant dans les méthodes, et le cycle de déclaration est limité à la phase d'appel de la méthode)

Les classes en C# incluent des champs, des propriétés et des méthodes. Les champs correspondent aux attributs en Java. Les objets d'attribut en C# et les accesseurs get et set en Java sont des encapsulations de champs. Les méthodes sont les mêmes et décrivent toutes deux les comportements.

Invocation des membres de la classe :

Les membres de l'instance sont appelés par des objets. Les membres statiques sont appelés par classes. Cependant, en Java, les membres statiques peuvent également être appelés par des instances, ce qui signifie que chaque étudiant de la classe peut contrôler les frais de cours à volonté, ce qui est un très gros problème. C# est strictement limité à cet égard. Les membres statiques ne peuvent être appelés que par classes.

Trois fonctionnalités principales - Encapsulation

Encapsulation : un moyen de masquer les détails d'implémentation internes et d'obtenir les effets de protection de la sécurité des données et de réutilisation du code.

L'encapsulation est partout, apparemment simple mais extensible à l'infini. Il n'y a pas de mot-clé explicite pour l'encapsulation. Puisqu’il s’agit d’une idée et d’une méthode, il n’y a aucune différence grammaticale entre Java et C#. C'est juste que lorsqu'ils utilisent des modificateurs d'accès pour obtenir l'effet d'encapsulation, les modificateurs d'accès des deux langages sont différents.

En Java :

private : privé, accessible uniquement en interne

dufault : par défaut, accessible en interne dans le même package.

Protégé : protégé, accessible dans le même package ou dans des sous-classes de packages différents.

Public : Public, accessible de n'importe où.

Caractéristiques : il existe une relation de propriété de taille claire : private < default < protected < mais C'est un regroupement logique, qui est différent du regroupement physique de packages en Java. Un assemblage est similaire à un projet) :

privé : privé, accessible uniquement en interne.

internal : interne, accessible au sein du même assembly, identique à celui par défaut.

Protégé : protégé, accessible dans les sous-classes, ce qui est différent de protégé en Java. La portée ici est plus petite et les non-sous-classes du même assembly ne peuvent pas y accéder.

Interne protégé : C'est l'union des étendues d'accès internes et protégées.

Public : Public, accessible de n'importe où.

Caractéristiques : il n'y a pas de relation de propriété claire en termes de taille, et la taille de la portée d'accès interne et protégée n'est pas claire.



Trois fonctionnalités majeures - héritage  
Héritage : le but est de permettre à une classe d'avoir les attributs et les méthodes d'une autre classe.

En Java : l'utilisation s'étend pour indiquer l'utilisation de l'héritage

Conditions requises pour la réécriture : a. Le nom de la méthode, le type de valeur de retour et les paramètres sont les mêmes ; le modificateur d'accès doit être supérieur ou égal à la classe parent Modificateur d'accès à la méthode ;

Accédez aux membres de la classe parent : utilisez le mot-clé super, vous pouvez utiliser super (paramètre pour spécifier une méthode constructeur de la classe parent); appelé dans le constructeur.

En C# : Utilisation : Indique l'utilisation de l'héritage

Conditions requises pour la réécriture : a. Le nom de la méthode, le type de valeur de retour, les paramètres et les modificateurs d'accès sont les mêmes ; la méthode est modifiée par virtual. La méthode de la sous-classe est modifiée par override

L'accès à la classe parent est réussi : utilisez le mot-clé base, utilisez : base (paramètre) après la méthode constructeur spécifier pour appeler le constructeur de la classe parent ; méthode, base ne peut pas être utilisée dans un environnement statique et ne peut pas être appelée membre statique de la classe parent.

Remplacer : utilisez le nouveau mot-clé. Introduisez le contenu de override en C# Pour la méthode non virtuelle de la classe parent, c'est-à-dire la méthode qui ne peut pas être substituée, l'utilisation de override peut remplacer la méthode de la classe parent. Mon point de vue sur l'écrasement est de compenser les problèmes qui peuvent découler de la limitation selon laquelle les méthodes doivent être modifiées par virtual afin d'être remplacées. Mais si vous ne pouvez pas l'utiliser, ne l'utilisez pas. , ou je n'ai pas vraiment réalisé le rôle et l'effet réels de l'écrasement. En cas d'utilisation, un expert peut commenter et dissiper tout doute.

La base pour juger si la réécriture est réussie : utilisez la référence de la classe parent pour pointer vers l'objet de la sous-classe. Si la méthode appelle la méthode de la classe parent, la réécriture échoue. est appelé, la réécriture échoue.

Trois caractéristiques majeures - le polymorphisme

Polymorphisme : formes d'existence multiples d'un même comportement. Les manifestations comprennent : la surcharge et la réécriture.

Exigences de surcharge : a. Dans la même classe ; b. Le même nom de méthode ; c. Différents paramètres (nombre, type, ordre des paramètres).

Lors de l'appel, déterminez quelle méthode appeler en fonction des paramètres transmis.

Classes et interfaces abstraites

Classes abstraites : Les classes modifiées avec abstract sont appelées classes abstraites.

Source : À mon avis, la source des cours abstraits mérite d'être soigneusement réfléchie pour aider à approfondir la compréhension. Il existe de nombreux problèmes de ce type dans la vie réelle, c'est-à-dire que nous savons que ce genre de choses fera cette action (méthode), mais nous ne savons pas comment le faire. Par exemple, nous savons tous que les animaux bougent, mais vous. Je ne sais pas comment chaque animal bouge. Lors de la définition de cette classe Animal à ce stade, vous avez besoin d'une méthode move. Elle n'a qu'un en-tête de méthode (décrivant ce qu'elle fera) et aucun corps de méthode (décrivant comment le faire). Ensuite, cette méthode est assez spéciale, nous marquons donc). comme méthode abstraite, utilisez la modification abstraite.

Il existe donc des méthodes abstraites dans la classe Animal Si vous instanciez la classe Animal, quels types de problèmes surviendront lorsque vous appellerez la méthode move ? Inconnu car il ne décrit pas comment procéder. Ainsi, afin d'éviter cette situation inconnue, par exemple, la classe Animal est définie comme une classe abstraite. La particularité notable est qu'elle ne peut pas être instanciée. Pour une classe qui ne peut pas être instanciée, ses membres non statiques ne peuvent pas être appelés. Alors, quelle est la signification de l'existence d'une telle classe ?

Donc résumé : le sens de l'existence d'une classe abstraite doit être hérité. Des classes abstraites existent pour les méthodes abstraites. Elles ont des constructeurs mais ne peuvent pas être instanciées. Grammaticalement, Java et C# sont identiques à cet égard, je n'entrerai donc pas dans les détails.

Interface : un ensemble de règles et de spécifications formulées de manière à ce que toutes les classes d'implémentation répondent à ces règles et spécifications. Dans les applications pratiques, cela peut considérablement augmenter la flexibilité du programme. Ma compréhension de la programmation orientée interface n'est pas particulièrement approfondie et je ne peux pas l'expliquer clairement en une ou deux phrases seulement. Il existe des experts qui peuvent publier leur propre expérience et en tirer des leçons.

Différence : En C#, si la classe d'implémentation n'implémente pas toutes les méthodes de l'interface, elle peut se définir comme une classe abstraite et recopier les méthodes non implémentées et les définir comme méthodes abstraites.

Résumé

J'ai toujours été engagé dans le développement Java et je n'ai appris le C# que lorsque cela était nécessaire pour l'enseignement. Il y a des similitudes et je peux l'apprendre rapidement. Ici, nous nous concentrons uniquement sur la syntaxe. Les gros gars travaillent sur les protocoles et travaillent sur la couche inférieure, donc ils n'aiment pas ça.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn