Je suis passé de C# à Java depuis un certain temps. Je voudrais résumer ce que je pense être la différence entre la syntaxe de Java et C#. Si vous avez des opinions différentes, j'aimerais demander à tout le monde quand Haihan a appris Java pour la première fois. , il a estimé que la syntaxe était à peu près la même que celle du C# (je devrais dire C# À peu près la même que Java, après tout, le C# de Microsoft imite intentionnellement les habitudes syntaxiques de Java)
Bill Gates a dit un jour : « Java est le langage de programmation le plus remarquable »
Plus près de chez nous, explorons les différences de syntaxe entre Java et C#. . .
1. Espaces de noms et packages
Afin d'organiser ensemble des classes qui implémentent des fonctions similaires, C# introduit le concept d'espace de noms (namespace)
L'équivalent en Java s'appelle un package
2. Différences dans le contrôle d'accès aux classes
C# n'a que deux types : public et par défaut (identique à interne)
public accessible à toutes les classes (dans le même projet et dans des projets différents)
internal (par défaut internal lorsqu'aucun caractère de contrôle n'est ajouté avant le mot-clé class), indiquant que la classe n'est accessible que dans le même projet
Il n'existe que deux types de Java : public et par défaut
public est accessible à toutes les classes. Par défaut (lorsqu'aucun caractère de contrôle n'est ajouté avant le mot-clé class), seules toutes les classes du même package peuvent y accéder.
3. Contrôle d'accès des membres du groupe
Il existe quatre types en C# : public, protégé, privé (par défaut), interne (notez qu'interne et par défaut sont différents ici)
public accessible à toutes les classes
protected n'est accessible que par les sous-classes
private (c'est-à-dire par défaut lorsqu'aucun caractère de contrôle n'est écrit) n'est accessible qu'au sein de la classe
interne accessible aux classes du même projet
Java a également quatre types : public, protégé, privé et par défaut
public accessible à toutes les classes
protected est accessible par d'autres classes du même package ou par des sous-classes dans des packages différents
Private ne peut être utilisé qu'à l'intérieur d'une classe et est accessible par défaut aux autres classes de ce package. Si une sous-classe et la classe parent se trouvent dans des packages différents, la sous-classe ne peut pas accéder aux membres de contrôle d'accès par défaut dans la classe parent.
4. L'héritage de classe en C# est implémenté via deux-points : et extends est utilisé en Java.
L'interface est implémentée via deux points : en C# et implémentée en Java.
Les classes scellées sont implémentées en utilisant seal en C# et final en Java.
Les constantes sont implémentées comme const en C# et final en Java
Les propriétés en C# sont implémentées à l'aide de blocs de code set et get. En Java, les champs similaires à ceux de C# sont généralement utilisés pour représenter les propriétés, ou ils sont implémentés à l'aide de constructeurs setter et getter.
Il existe un concept de classe partielle en C# mais pas en Java
Il existe un attribut modifié en lecture seule en C# qui est en lecture seule, mais pas en Java.
Il existe des méthodes virtuelles modifiées et des méthodes remplacées en C#, mais pas en Java. Les méthodes de la classe parent par défaut en Java sont toutes virtuelles.
Il existe des concepts de blocs de code statiques{} et synchronisés{} en Java, mais pas en C#.
Il existe un concept d'étiquettes (comme labelA :) en Java, mais pas en C#
En C#, la sous-classe utilise base.method() pour appeler la méthode de la classe parent, et en Java, super.method() est utilisée.
En C#, is est utilisé pour déterminer si une instance appartient à une certaine classe, et en Java, instanceof est utilisé.
En C#, foreach(int i in array) est utilisé pour parcourir chaque élément du tableau, et en Java, for(int i : array) est utilisé