重複の可能性:
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
して、初期化後に変更されないようにすることができます (フィールドの場合は、コンストラクターの外部)。readonly
C# では、まったく同じ効果を得るためにフィールドを宣言できますが、ローカル変数は宣言できません。Java には C# のconst
キーワードに相当するものがないことに注意してください。( const
C# の はコンパイル時に評価され、値は参照される代わりにハードコーディングされます)
クラスについては、C# のsealed
クラスと Java のfinal
クラスはまったく同じです (AFAIK)。
この回答を見てください: What is the equality of Java's final in C#?