「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Virtual vs. New in C#:ベースクラスのメソッドをオーバーライドまたは非表示にするのはいつですか?

Virtual vs. New in C#:ベースクラスのメソッドをオーバーライドまたは非表示にするのはいつですか?

2025-01-29に公開
ブラウズ:742

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

c#

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

Dirtual rewriting

ベースクラスで「仮想」として宣言された方法は、サブクラスを書き直すことができることを示しています。

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

デリバティブクラスの基礎中国の方法と同じ名前の新しい方法を述べてください。

基本的な方法を非表示にし、派生クラスに新しい実装を作成します。
  • 継承チェーンを破壊します。つまり、導出された方法はベースメソッドに関連していません。
次のコードを検討してください:

パブリッククラスベース {{ public virtual bool dosomething(){return false;} } パブリッククラス派生:ベース:ベース {{ パブリックオーバーライドbool dosomething(){return true;} }

派生インスタンスを作成してベースタイプ変数に保存すると、dosomething()の呼び出しは、派生の書き換え方法を呼び出します:

public class Base
{
    public virtual bool DoSomething() { return false; }
}

public class Derived : Base
{
    public override bool DoSomething() { return true; }
}
逆に、派生の新しいキーワードを使用すると、変数がベースタイプであっても、新しいメソッドを呼び出します。

パブリッククラス派生:ベース {{ Public New Bool dosomething(){return true;} }
Base a = new Derived();
a.DoSomething(); // 返回 true
base a = new derived(); a.dosomething();

いつ仮想と新しい

を書き直すか
public class Derived : Base
{
    public new bool DoSomething() { return true; }
}
新しい独立した実装を作成するために新品を使用して、継承チェーンを破壊します。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3