重複の可能性:
C# での Java の final に相当するものは何ですか?
Java では、 final は単なるクラス以上のものに適用されます。
それで、私は疑問に思います: 2 つのキーワードの間に機能上の違いはありますか?
ありがとうございます。比較的初歩的な質問で申し訳ありません。
簡単な Google 検索では、私のニーズは満たされませんでした。
重複の可能性:
C# での Java の final に相当するものは何ですか?
Java では、 final は単なるクラス以上のものに適用されます。
それで、私は疑問に思います: 2 つのキーワードの間に機能上の違いはありますか?
ありがとうございます。比較的初歩的な質問で申し訳ありません。
簡単な Google 検索では、私のニーズは満たされませんでした。
Java のfinalキーワードは、C# のsealed、readonly、およびsealedキーワードに相当します。
これら 3 つのうちの 2 つは、Java と C# で若干異なります。
Java では、メソッドはデフォルトで仮想であるため、finalオーバーライドされないように任意のメソッドを宣言できます。C# では、メソッドはデフォルトで仮想化されていないため、オーバーライドされたメソッドのみを宣言できますsealed (それらがさらにオーバーライドされないようにするため)。
Java では、任意の変数またはフィールドを宣言finalして、初期化後に変更されないようにすることができます (フィールドの場合は、コンストラクターの外部)。readonlyC# では、まったく同じ効果を得るためにフィールドを宣言できますが、ローカル変数は宣言できません。Java には C# のconstキーワードに相当するものがないことに注意してください。( constC# の はコンパイル時に評価され、値は参照される代わりにハードコーディングされます)
クラスについては、C# のsealedクラスと Java のfinalクラスはまったく同じです (AFAIK)。
この回答を見てください: What is the equality of Java's final in C#?