- c#書き換えのメソッドの詳細な理解
オブジェクト指向プログラミングでは、メソッド書き換えにより、デリバティブクラスが基本クラスの継承方法の独自の実装を提供することができます。 C#は、「仮想」と「オーバーライド」キーワードの2つの非常に異なる方法の書き換え方法を提供するか、同じ署名で新しい方法を宣言するだけです。
仮想オーバーライド
メソッドが基本クラスで「仮想」と宣言されている場合、「オーバーライド」キーワードを使用して、派生クラスで書き直すことができます。この方法により、デリバティブは元のメソッドの署名を維持しながら独自の実装を提供できます。実行するとき、オブジェクトが派生したとき、オブジェクトを保持する参照変数がベースタイプであっても、書き換え方法が呼び出されます。
new
または、同じ署名を持つ新しいメソッドを宣言して新しい方法を再作成し、「新しい」とマークすることができます。この方法は、ベースクラスの実装を完全に置き換え、オブジェクトのタイプが実行されていても、書き換え方法が呼び出されます。
微分例
違いを説明するために、次のコードフラグメントを考慮してください:
次のようにコードを呼び出す場合:
public class Foo
{
public virtual bool DoSomething() { return false; }
}
public class Bar : Foo
{
public override bool DoSomething() { return true; }
}
ログイン後にコピー
書き換えの方法によって結果は異なります:
Foo a = new Bar();
a.DoSomething();
ログイン後にコピー
仮想オーバーライド:オブジェクトがFOOタイプ変数に保存されていても、ランタイム時に派生クラス(bar)で再発する方法。 -
新しい:派生クラス(BAR)の新しいメソッドを使用して、基本クラス(FOO)の実装を効果的に置き換えます。
- 主な違い
要するに、「仮想」、「オーバーライド」、「新しい」の主な違いは次のとおりです。
呼び出し:
仮想オーバーライドは、オブジェクトのタイプがデリバティブクラスと一致している場合にのみ通話および書き換えを許可し、オブジェクトのタイプに関係なく新しい方法が常に呼び出されます。
実装:
仮想オーバーライド元のメソッド署名を維持し、派生クラスが代替実装を提供し、基本クラスの実装を新しい交換します。
の使用:
仮想オーバーライドは、異なる派生クラスをより適しています。 -
以上がC# メソッドのオーバーライド: 仮想/オーバーライドと新規 – 違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。