ホームページ >バックエンド開発 >C++ >C#でシャドウイングとオーバーライド:違いは何ですか?

C#でシャドウイングとオーバーライド:違いは何ですか?

DDD
DDDオリジナル
2025-01-28 14:16:09659ブラウズ

Shadowing vs. Overriding in C#: What's the Difference?

C#で非表示と書き換え:depth分析 隠し:基礎を保護する方法

hiddenは、基本クラスから相続したメンバーと同じ名前のメンバーです。書き換えとは異なり、派生したクラスは父親とソンの関係を確立しません。代わりに、Hidden Foundationメンバーの新しいエンティティを作成します。

以下は例です: このシーンでは、犬で宣言されたSayhello()メソッドは、動物から継承された方法を隠します。犬のオブジェクトがsayhello()を呼び出すと、隠された方法が実行され、基本クラスの実装がブロックされます。

書き換え:基本クラスの方法の変更

この例では、犬のsayhello()メソッドは、動物で定義された方法を書き直します。犬のオブジェクトを呼び出すとき、書き換えの方法が提供され、犬に固有のカスタム行動を提供します。

<code class="language-csharp">class Animal
{
    public virtual string SayHello() { return "Hello from Animal"; }
}

class Dog : Animal
{
    public new string SayHello() { return "Hello from Dog"; }
}</code>
隠しと書き換えの重要な違い

アクセス許可:ベースクラスメソッドを予約するベースメソッドメソッドへのアクセス、および派生クラスがそれを変更できるようにする隠された方法。

相続関係:

父親の関係の確立を書き直し、基本クラスの隠れメンバー。
<code class="language-csharp">class Animal
{
    public virtual string SayHello() { return "Hello from Animal"; }
}

class Dog : Animal
{
    public override string SayHello() { return "Hello from Dog"; }
}</code>

隠されたメンバー:

継承を隠すことができるメンバーは、基本コードを使用するときに問題を引き起こす可能性があります。

アクティビティドメイン:書き換え方法は、継承階層構造に拘束され、隠された方法は派生クラスの範囲に限定されます。

  • 隠された書き換えを使用する非表示は、通常、相続レベルの構造の競合の命名を避けるために使用されますが、デリバティブクラスからの継承を隠すためにも使用できます。 一方、サブクラスの動作を書き換えると、継承方法が変更され、継承ツリーを破壊することなく機能を定義する柔軟性が提供されます。

以上がC#でシャドウイングとオーバーライド:違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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