c#メソッドが隠されて書き直されました:詳細な説明 c#では、派生クラスは、メソッドの隠れと書き換えの2つの異なる方法で基本クラスの方法を操作できます。これらの2つの概念を理解することの違いは、効果的なコードメンテナンスと継承に不可欠です。 メソッドは
を隠します
クラスが財団中国の方法と同じ名前の新しい方法を宣言するが、書き換え方法として明示的な声明はない場合、この方法は非表示になります。新しいステートメントの方法は、基本クラスの実装を効果的に隠し、独自の独立した実装を提供します。例:
クラスBのインスタンスでCLBがClb.foo()を呼び出すと、クラスBと出力「1」の実装が実行されます。ただし、CLBをクラスAに変換すると、発信者はFOO()と出力「5」の基本クラスの実装にアクセスします。書き換え
<code class="language-csharp">class A { public int Foo(){ return 5;} } class B : A{ public new int Foo() { return 1;} //隐藏 }</code>
例:
クラスBのインスタンスがclb.bar()を呼び出すと、クラスBの書き換え実装を実行し、「1」を出力します。必須カテゴリAのCLBを変換することは、呼び出しと再現実性が常に呼び出されるため、動作に影響しません。
主な違いdided foundationメソッド:
<code class="language-csharp">class A { public virtual int Bar(){return 5;} } class B : A{ public override int Bar() {return 1;} //重写 }</code>
書き換えにはキーワードが必要です:
書き換えはオーバーライドキーワードを使用して、予想される交換を明示的に示す必要があります。 隠された破壊継承:
基本クラスの実装を隠すことにより、隠すことは継承チェーンを破壊する可能性があります。相続関係を書き直します。以上がC#のメソッドシャドーイングとオーバーライドの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。