C# で Java `final` 相当のキーワード

Muhammad Maisam Abbas 2024年2月16日
C# で Java `final` 相当のキーワード

このチュートリアルでは、Java の final キーワードに相当する C# キーワードについて説明します。

C# で Java final 同等のキーワード

残念ながら、Java の final キーワードと同じことを行うキーワードは C# にはありません。final キーワードは、さまざまなコンテキストでさまざまな目的を果たします。クラスでは、関数宣言 final キーワードを使用して、クラスからの継承や仮想関数の新しい定義を防止します。フィールドの初期化では、final キーワードを使用して、特定のフィールド値をプログラムの後半で変更できないように指定します。

クラスおよび関数宣言の Java final キーワード

C# の sealed キーワードは、クラスまたは関数の宣言に使用される場合、Java 言語の final キーワードと同等です。次のコード例は、Java のクラス宣言で final キーワードを使用する方法を示しています。

public final class MyFinalClass {
  ...
}

上記のコードは、Java で MyClass クラスを継承できないようにします。この目標は、C# の sealed キーワードで達成できます。次のコード例は、C# のクラス宣言で sealed キーワードを使用する方法を示しています。

public sealed class MySealedClass {
  ...
}

上記のコードは、C# で MySealedClass クラスを継承できないようにします。final キーワードは、Java で仮想関数の定義がこれ以上ないことも指定します。次のコード例は、Java の関数宣言で final キーワードを使用する方法を示しています。

public class MyClass {
  public final void myFinalFunction() {
    ...
  }
}

これにより、Java で仮想関数 myFinalFunction() をこれ以上定義できなくなります。この機能は、C# の sealed および override キーワードを使用して複製できます。次のコード例は、C# の関数宣言で sealed キーワードを使用する方法を示しています。

public class MyChildClass : MyParentClass {
  public sealed override void mySealedFunction() {
    ...
  }
}

上記のコードは、C# で仮想関数 mySealedFunction() の定義をこれ以上作成できないようにします。

フィールド初期化の Java final キーワード

C# の readonly キーワードは、フィールドの初期化に使用される場合、Java 言語の final キーワードと同等です。次のコード例は、Java のフィールド初期化で final キーワードを使用する方法を示しています。

public final float g = 10;

これにより、Java で g の値を変更できなくなります。この目標は、C# の readonly キーワードで達成できます。次のコード例は、C# のフィールド初期化で readonly キーワードを使用する方法を示しています。

public readonly float g = 10;

これにより、C# で g の値を変更できなくなります。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

関連記事 - Csharp Keyword