私はしばらく C# から Java に切り替えてきましたが、Java と C# の構文の違いについて私が思うことをまとめたいと思います。もし意見があれば、ハイハンが初めて Java を学んだときのことを質問したいと思います。 、彼は構文が C# とほぼ同じであると感じました (C# は Java とほぼ同じと言うべきです。結局のところ、Microsoft の C# は意図的に Java の構文習慣を模倣しています)。
ビル・ゲイツはかつてこう言いました、「Java は最も優れたプログラミング言語である」
ここで、Java と C# の構文の違いを見てみましょう。 。 。
1. 名前空間とパッケージ
同様の機能を実装するクラスをまとめて編成するために、C# では名前空間 (ネームスペース) の概念が導入されます。
Java ではこれに相当するものをパッケージと呼びます
2. クラスのアクセス制御の違い
C# には public とdefault (internal と同じ) の 2 つのタイプしかありません
public は、すべてのクラス (同じプロジェクト内および異なるプロジェクト内) からアクセスできます。
external (class キーワードの前に制御文字が追加されていない場合はデフォルトで external)、クラスが同じプロジェクト内でのみアクセスできることを示します
Java にはパブリックとデフォルトの 2 種類しかありません
public はすべてのクラスからアクセスできます。デフォルトでは (class キーワードの前に制御文字が追加されていない場合)、同じパッケージ内のすべてのクラスからのみアクセスできます。
3. クラスメンバーのアクセス制御
C# にはパブリック、プロテクト、プライベート (デフォルト)、内部の 4 つのタイプがあります (ここでは内部とデフォルトが異なることに注意してください)
public はすべてのクラスからアクセスできます
protected はサブクラスからのみアクセスできます
private (つまり、制御文字が書き込まれない場合のデフォルト) はクラス内でのみアクセスできます
内部は同じプロジェクト内のクラスからアクセスできます
Java にも public、protected、private、default の 4 つのタイプがあります。
public はすべてのクラスからアクセスできます
protected は、同じパッケージ内の他のクラス、または異なるパッケージ内のサブクラスからアクセスできます。
Private はクラス内でのみ使用でき、デフォルトでは、サブクラスと親クラスが異なるパッケージにある場合、サブクラスは親クラスのデフォルトのアクセス制御メンバーにアクセスできません。
4. C# のクラス継承は、collon: によって実装され、Java では extends が使用されます。
このインターフェイスは、C# ではコロン: によって実装され、Java では実装されます。
Sealed クラスは、C# では sealed を使用し、Java では Final を使用して実装されます。
定数は、C# では const として実装され、Java では Final として実装されます。
C# のプロパティは、set および get コード ブロックを使用して実装されます。Java では、通常、C# と同様のフィールドがプロパティを表すために使用されるか、setter コンストラクターおよび getter コンストラクターを使用して実装されます。
C# には部分クラスの概念がありますが、Java にはありません。
C# には読み取り専用の readonly Modified 属性がありますが、Java にはありません。
C# には仮想メソッドとオーバーライドされた変更された仮想メソッドとオーバーライドされたメソッドがありますが、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) が使用されます。