1. ホーム
  2. c#

[解決済み] C# シールドとJavaファイナルの比較

2022-02-25 17:19:20

質問

以下のように使用されている理由を教えてください。 sealed はコンパイルされないのでしょうか?一方 sealedfinal を実行し、Javaとしてコンパイルすると、動作します。

private sealed int compInt = 100;
public bool check(int someInt)
{
    if (someInt > compInt)
    {
        return true;
    }
    return false;
}

解決方法は?

それは final は使う場所によって様々な意味を持ちますが、Javaでは sealed を適用します。 のみ クラスと継承された仮想メンバー (メソッド、プロパティ、イベント) に適用されます。

Javaでは final を適用することができる。

  • クラス これは、そのクラスが継承できないことを意味します。これは、C#の sealed .
  • メソッド これは、派生クラスでそのメソッドをオーバーライドできないことを意味します。これはC#のデフォルトで、メソッドを virtual で、派生クラスでは、さらに派生クラスでこれを防ぐことができます。 sealed をもう一度。そのため sealed よりもはるかに少ないです。 final のメンバーは、Javaで
  • フィールド 変数 つまり、一度しか初期化できない。フィールドの場合、C#では次のようになります。 readonly .