4

私は現在新しいプロジェクトに取り組んでおり、この警告がたくさんあります:

関数 'yyy' は、基本クラス 'zzz' のオーバーライド可能なメソッドをシャドウします。基本メソッドをオーバーライドするには、このメソッドを「オーバーライド」として宣言する必要があります。

すべてをオーバーライドとして配置しても安全かどうか疑問に思っています。これはデフォルトの動作ですか? 多くのテストが行​​われ、問題を最小限に抑えたいと考えています。

4

1 に答える 1

6

オーバーライドに変更することは同じではありません。キーワードShadowsを追加して警告をなくすこともできますが、メッセージで長時間実行した場合、それらをオーバーライドに変更すると、以前とは異なる動作が発生する可能性があります。

オーバーライドとシャドウの唯一の違いは、シャドウにはオーバーライドのようなポリモーフィック効果がないことです。そのため、基本クラスのオブジェクトでメソッドを呼び出すと、それがたまたま子クラスのインスタンスを保持していたとしても、基本クラスのメソッドは常に呼ばれた。

ただし、繰り返しますが、その警告が表示される場合は、Shadowsキーワードが追加されていることを意味しますが、それが必要な効果であることを確認するために警告をスローします。自分でキーワードを追加するだけでそれを排除できます. それがあなたが望んでいた動作であると思われる場合Overridesは、それを追加することもできますが、それらは同等ではないことに注意してください。

于 2013-08-12T17:48:58.167 に答える