Estou mudando de C# para Java há algum tempo. Gostaria de resumir o que considero a diferença entre a sintaxe de Java e C#. Se você tiver alguma opinião diferente, gostaria de perguntar a todos. , ele sentiu que a sintaxe era aproximadamente a mesma do C# (devo dizer C# aproximadamente igual ao Java, afinal, o C# da Microsoft imita intencionalmente os hábitos de sintaxe do Java)
Bill Gates disse uma vez: “Java é a linguagem de programação mais notável”
Mais perto de casa, vamos explorar as diferenças de sintaxe entre Java e C#. . .
1. Namespaces e pacotes
Para organizar classes que implementam funções semelhantes juntas, C# introduz o conceito de namespace (namespace)
O equivalente a isso em Java é chamado de pacote
2. Diferenças no controle de acesso das aulas
C# tem apenas dois tipos: público e padrão (igual ao interno)
public pode ser acessado por todas as classes (no mesmo projeto e em projetos diferentes)
internal (o padrão é internal quando nenhum caractere de controle é adicionado antes da palavra-chave class), indicando que a classe só pode ser acessada no mesmo projeto
Existem apenas dois tipos de Java: público e padrão
public pode ser acessado por todas as classes. Por padrão (quando nenhum caractere de controle é adicionado antes da palavra-chave class), ele só pode ser acessado por todas as classes no mesmo pacote.
3. Controle de acesso dos alunos
Existem quatro tipos em C#: público, protegido, privado (padrão), interno (observe que interno e padrão são diferentes aqui)
public pode ser acessado por todas as classes
protegido só pode ser acessado por subclasses
private (isto é, por padrão quando nenhum caractere de controle é escrito) só pode ser acessado dentro da classe
interno pode ser acessado por classes no mesmo projeto
Java também possui quatro tipos: público, protegido, privado e padrão
public pode ser acessado por todas as classes
protegido pode ser acessado por outras classes no mesmo pacote ou por subclasses em pacotes diferentes
Private só pode ser usado dentro de uma classe e pode ser acessado por outras classes neste pacote por padrão. Se uma subclasse e a classe pai estiverem em pacotes diferentes, a subclasse não poderá acessar os membros de controle de acesso padrão na classe pai.
4. A herança de classe em C# é implementada através de dois pontos: e estende é usado em Java.
A interface é implementada através de dois pontos: em C# e implementada em Java.
Classes seladas são implementadas usando seladas em C# e finais em Java.
Constantes são implementadas como const em C# e final em Java
Propriedades em C# são implementadas usando blocos de código set e get. Em Java, campos semelhantes aos de C# são geralmente usados para representar propriedades ou são implementados usando construtores setter e getter.
Existe um conceito de classe parcial em C#, mas não em Java
Existe um atributo modificado somente leitura em C# que é somente leitura, mas não em Java.
Existem métodos virtuais modificados e métodos substituídos em C#, mas não em Java. Os métodos na classe pai padrão em Java são todos virtuais.
Existem conceitos de blocos de código{} estáticos e{} sincronizados em Java, mas não em C#.
Existe um conceito de rótulos (como labelA :) em Java, mas não em C#
Em C#, a subclasse usa base.method() para chamar o método da classe pai, e em Java, super.method() é usado.
Em C#, is é usado para determinar se uma instância pertence a uma determinada classe, e em Java, instanceof é usado.
Em C#, foreach(int i : array) é usado para percorrer cada elemento do array, e em Java, for(int i : array) é usado