12

重複の可能性:
C# での Java の final に相当するものは何ですか?

Java では、 final は単なるクラス以上のものに適用されます。

それで、私は疑問に思います: 2 つのキーワードの間に機能上の違いはありますか?

ありがとうございます。比較的初歩的な質問で申し訳ありません。

簡単な Google 検索では、私のニーズは満たされませんでした。

4

2 に答える 2

23

Java のfinalキーワードは、C# のsealedreadonly、およびsealedキーワードに相当します。

これら 3 つのうちの 2 つは、Java と C# で若干異なります。

Java では、メソッドはデフォルトで仮想であるため、finalオーバーライドされないように任意のメソッドを宣言できます。C# では、メソッドはデフォルトで仮想化されていないため、オーバーライドされたメソッドのみを宣言できますsealed (それらがさらにオーバーライドされないようにするため)。

Java では、任意の変数またはフィールドを宣言finalして、初期化後に変更されないようにすることができます (フィールドの場合は、コンストラクターの外部)。readonlyC# では、まったく同じ効果を得るためにフィールドを宣言できますが、ローカル変数は宣言できません。Java には C# のconstキーワードに相当するものがないことに注意してください。( constC# の はコンパイル時に評価され、値は参照される代わりにハードコーディングされます)

クラスについては、C# のsealedクラスと Java のfinalクラスはまったく同じです (AFAIK)。

于 2010-01-15T02:20:55.110 に答える
5

この回答を見てください: What is the equality of Java's final in C#?

于 2010-01-15T02:17:45.627 に答える