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

C#のメソッドシャドーイングとオーバーライドの違いは何ですか?

Patricia Arquette
リリース: 2025-01-28 14:05:09
オリジナル
247 人が閲覧しました

What's the Difference Between Method Shadowing and Overriding in C#?

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>
ログイン後にコピー
非表示とは異なり、メソッドはデリバティブクラスで新しい実装方法の実装を書き直します。これは、Overrideキーワードを使用して達成されます。

例:

クラス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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート