および new
override
オブジェクト指向のプログラミングでは、継承により、ベースクラスの継承と拡張の機能が可能になります。デリバティブでメソッドを定義するとき、開発者はしばしばキーワード「新しい」と「オーバーライド」を使用します。これらの2つのキーワードには同様の効果があるように見えますが、その目的は非常に異なります。
キーワード
キーワードのメソッドは、派生クラスは新しい方法であり、基本クラスのどの方法とは関係ありません。基本クラスに同じ名前がある場合でも、new
メソッドには派生クラスの個別の実装があります。
キーワードnew
new
一方、
行動の違いoverride
の重要な違いは、メソッド呼び出しの処理方法です。基本クラスのリファレンスでoverride
メソッドが呼び出された場合、デリバティブクラスの実装が実行されます。ただし、メソッドが呼び出された場合、参照の種類に関係なく、派生クラスの実装を実装します。 override
次のコードは、
との違いを示しています:new
override
この例では、()を呼び出して、派生型のオブジェクト上の派生クラスの実装を実行します。ただし、derived.doit()が新しい方法であるため、ベースタイプのオブジェクトでベース()で元の実装を実行するように呼び出します。 new
override
ユースケース
:
ベースクラスと比較して派生クラスを完全に使用する必要がある場合、ベースクラスとは完全に異なる場合に使用されます。 new
override
<code class="language-csharp">public class Base { public virtual void DoIt() { } } public class Derived : Base { public new void DoIt() { } // 新的实现 }</code>デリバティブクラスが、自己ベースのクラスを継承するための異なるまたは改善された方法を提供したい場合は、それを使用します。
以上がC#継承のメソッドの「新しい」と「オーバーライド」キーワードの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。