1. ホーム
  2. c#

[解決済み] C#でJavaのfinalに相当するものは何ですか?

2022-03-03 23:05:09

質問

Java の final をC#で使うことはできますか?

どのように解決するのですか?

その 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#では sealed . したがって sealed と明示的にマークされたメソッドのオーバーライドを停止したい場合、C#のキーワードを使用します。 virtual をベースクラスで使用します。

変数

変数の代入を一度だけ許可すること。

ジャワ

public final double pi = 3.14; // essentially a constant

C#

public readonly double pi = 3.14; // essentially a constant

余談ですが、このときの効果は readonly キーワードとは異なります。 const キーワードは readonly 式が評価されるのは 実行時 よりも コンパイル時 そのため、任意の表現が可能である。