final
C# におけるJava に相当するものは何ですか?
ベストアンサー1
のfinal
キーワードはJavaでいくつかの用途があります。sealed
そしてreadonly
C# のキーワードは、使用されるコンテキストに応じて異なります。
クラス
サブクラス化(定義されたクラスからの継承)を防ぐには:
ジャワ
public final class MyFinalClass {...}
C#
public sealed class MyFinalClass {...}
方法
メソッドのオーバーライドを防止しますvirtual
。
ジャワ
public class MyClass
{
public final void myFinalMethod() {...}
}
C#
public class MyClass : MyBaseClass
{
public sealed override void MyFinalMethod() {...}
}
Joachim Sauer が指摘しているように、ここでの 2 つの言語の顕著な違いは、Java ではデフォルトですべての非静的メソッドが としてマークされるのに対し、virtual
C# では としてマークされることです。したがって、基本クラスで明示的にマークされたメソッドのさらなるオーバーライドを停止したい場合にのみ、C# で キーワードをsealed
使用する必要があります。sealed
virtual
変数
変数を 1 回だけ割り当てることを許可するには:
ジャワ
public final double pi = 3.14; // essentially a constant
C#
public readonly double pi = 3.14; // essentially a constant
ちなみに、readonly
キーワードの効果はconst
式はコンパイル時ではなく実行時readonly
に評価されるため、任意の式が許可されるという点でキーワードです。