1. ホーム
  2. c#

[解決済み] C#のoverrideとnewキーワードの違いは何ですか?

2023-05-22 16:31:29

質問

の違いは何ですか? overridenew というキーワードは、C#でクラス階層にメソッドを定義する際に使用されるのでしょうか?

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

次のページが、ご質問の内容をうまくまとめています。

オーバーライドと新規キーワードを使うタイミングを知る

概要

オーバーライド : ベースクラスのメソッドが派生クラスでオーバーライドされた場合、呼び出したコードがオブジェクトが派生クラスのインスタンスであることを知らなくても、派生クラスのバージョンが使用されます。

新しい : overrideの代わりにnewキーワードを使用すると、派生クラスのメソッドは基底クラスのメソッドをオーバーライドするのではなく、単に非表示にするだけです。

newもoverrideも指定しない場合、結果の出力はnewを指定した場合と同じですが、コンパイラの警告も表示されます(ベースクラスのメソッドを隠していることに気づいていない、または実際にオーバーライドしたかったのに単にキーワードを入れ忘れた可能性があるため)。

オーバーライド : ベースクラスのメソッドの virtual/abstract/override タイプで使用されます。

新しい : ベースクラスがメソッドを virtual/abstract/override として宣言していない場合。