ホームページ >バックエンド開発 >C++ >C# の仮想と新規: 基本クラスのメソッドをオーバーライドまたは非表示にする場合は?

C# の仮想と新規: 基本クラスのメソッドをオーバーライドまたは非表示にする場合は?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-27 06:33:09274ブラウズ

Virtual vs. New in C#: When to Override or Hide Base Class Methods?

C#

での仮想キーワードと新しいキーワードの使用 オブジェクト指向プログラミングでは、これらの方法は通常、ベースクラスで定義されており、これらのメソッドはデリバティブクラスで書き換えまたは再定義されます。 「仮想」と「新しい」キーワードの両方を使用してメソッド宣言を変更できますが、異なる実装方法があります。

仮想書き換え

基本クラスのメソッドの方法は「仮想」であり、サブクラスを書き直すことができることを示しています。

派生クラスが、継承チェーンを破壊することなく、実装のためのさまざまな方法を提供できるようにします。
  • 新しいキーワード

派生クラスの基礎中国の方法と同じ名前の新しい方法を述べてください。 基本クラスのメソッドを非表示にし、派生クラスで新しい実装を作成します。

    継承チェーンを破壊します。つまり、導出された方法はベースメソッドに関連していません。
  • 次のコードを検討してください:

派生のインスタンスを作成してベースタイプ変数に保存すると、dosomething()の呼び出しは、派生の書き換え方法を呼び出します。 それどころか、派生の新しいキーワードを使用すると、dosomething()が派生の新しいメソッドを呼び出します

仮想および新しいもので書き直す時期
<code class="language-csharp">public class Base
{
    public virtual bool DoSomething() { return false; }
}

public class Derived : Base
{
    public override bool DoSomething() { return true; }
}</code>
仮想を使用して書き換えて、継承チェーンを維持しながら動作を継承して拡張します。
<code class="language-csharp">Base a = new Derived();
a.DoSomething(); // 返回 true</code>

新しい独立した実装を作成するために新しい使用を行い、それによって継承チェーンを破壊します。

<code class="language-csharp">public class Derived : Base
{
    public new bool DoSomething() { return true; }
}</code>

以上がC# の仮想と新規: 基本クラスのメソッドをオーバーライドまたは非表示にする場合は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。