Я уже некоторое время перехожу с C# на Java. Я хотел бы подвести итог, в чем, по моему мнению, разница между синтаксисом Java и C#. Если у вас есть разные мнения, я хотел бы спросить всех, когда Хайхан впервые изучил Java. он чувствовал, что синтаксис примерно такой же, как у C# (я бы сказал, C# примерно такой же, как у Java, в конце концов, C# от Microsoft намеренно имитирует синтаксические особенности Java)
Билл Гейтс однажды сказал: «Java — самый выдающийся язык программирования».
Давайте рассмотрим синтаксические различия между Java и C#. . .
1. Пространства имен и пакеты
Чтобы организовать вместе классы, реализующие схожие функции, в C# вводится понятие пространства имен (namespace).
Эквивалент этого в Java называется пакетом.
2. Различия в разграничении доступа классов
В C# есть только два типа: общедоступный и по умолчанию (то же, что и внутренний).
public доступен всем классам (в одном проекте и в разных проектах)
внутренний (по умолчанию внутренний, если перед ключевым словом класса не добавляется управляющий символ), что указывает на то, что доступ к классу возможен только в том же проекте.
Существует только два типа Java: публичный и по умолчанию.
public доступен всем классам. По умолчанию (если перед ключевым словом class не добавляется управляющий символ), доступ к нему могут получить только все классы в одном пакете.
3. Контроль доступа участников класса
В C# существует четыре типа: общедоступный, защищенный, частный (по умолчанию), внутренний (обратите внимание, что внутренний и по умолчанию здесь различаются).
public доступен всем классам
Защищенный доступ доступен только подклассам
частный (то есть по умолчанию, когда не записаны управляющие символы) доступен только внутри класса
внутренний может быть доступен классам в том же проекте
Java также имеет четыре типа: общедоступный, защищенный, частный и по умолчанию.
public доступен всем классам
Защищенный может быть доступен другим классам в том же пакете или подклассам в разных пакетах.
Private может использоваться только внутри класса и по умолчанию доступен другим классам в этом пакете. Если подкласс и родительский класс находятся в разных пакетах, подкласс не может получить доступ к элементам управления доступом по умолчанию в родительском классе.
4. Наследование классов в C# реализуется через двоеточие:, а в Java используется расширение.
Интерфейс реализован через двоеточие: на C# и реализован на Java.
Запечатанные классы реализованы с использованием запечатанных классов в C# и Final в Java.
Константы реализованы как const в C# и как Final в Java.
Свойства в C# реализуются с использованием блоков кода set и get. В Java поля, аналогичные полям в C#, обычно используются для представления свойств или они реализуются с использованием конструкторов установки и получения.
В C# существует концепция частичного класса, но нет в Java.
В C# есть модифицированный атрибут только для чтения, который доступен только для чтения, но не в Java.
В C# существуют виртуальные и переопределяемые модифицированные виртуальные методы, а также переопределенные методы, но их нет в Java. Все методы в родительском классе по умолчанию в Java являются виртуальными.
В Java существуют концепции статических{} и синхронизированных{} блоков кода, но их нет в C#.
В Java есть концепция меток (например, labelA:), но нет в C#.
В C# подкласс использует base.method() для вызова метода родительского класса, а в Java используется super.method().
В C# is используется для определения принадлежности экземпляра определенному классу, а в Java используется instanceof.
В C# foreach(int i in array) используется для обхода каждого элемента массива, а в Java используется for(int i : array).