ホームページ >バックエンド開発 >C++ >C#継承の「新しい」と「オーバーライド」の違いは何ですか?

C#継承の「新しい」と「オーバーライド」の違いは何ですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-28 12:07:08802ブラウズ

What's the Difference Between `new` and `override` in C# Inheritance?

c#継承:newおよびoverride

の理解

c#継承では、キーワードnewおよびoverrideは、派生クラスでメソッド動作を管理するための明確な方法を提供します。 この説明は、彼らの違いと適切な使用法を明確にします

修飾子:個別のメソッドの定義new

modifierを使用すると、派生クラスがベースクラスのメソッドと同じ名前のメソッドを導入できます。 重要なことに、これは

newは基本クラスのメソッドを上書きしません。代わりに、完全に独立した方法を作成します 例:

ここで、

は明確な方法です。 A in
<code class="language-csharp">public class BaseClass {
    public void MyMethod() { Console.WriteLine("BaseClass Method"); }
}

public class DerivedClass : BaseClass {
    public new void MyMethod() { Console.WriteLine("DerivedClass Method"); }
}</code>
インスタンスで呼び出してください。派生クラスのバージョンを実行します。

インスタンスでそれを呼び出して、基本クラスのバージョンを実行します。 DerivedClass.MyMethod() MyMethod()DerivedClassモディファイア:仮想メソッドの置換BaseClass

モディファイアは、基本クラスからのA override仮想メソッドの実装を置き換えるために使用されます。 基本クラスの方法

は、

(またはoverride)として宣言する必要があります。 派生クラスのインスタンスでメソッドが呼び出されたときに派生クラスのバージョンが呼び出されるようにします。 例:virtual abstract この場合、override

オーバーライド

。 A instanceでを呼び出します

重要な違いを要約:
<code class="language-csharp">public class BaseClass {
    public virtual void MyMethod() { Console.WriteLine("BaseClass Method"); }
}

public class DerivedClass : BaseClass {
    public override void MyMethod() { Console.WriteLine("DerivedClass Method"); }
}</code>

機能 DerivedClass.MyMethod() BaseClass.MyMethod()

メソッド作成 は、まったく新しい方法を作成します 既存の仮想メソッドを置き換えます 継承 メソッドの継承チェーンを破壊します 継承チェーンを維持します ベースクラスの方法 ベースクラスのメソッドは影響を受けていません ベースクラスのメソッドは、仮想/要約でなければなりません

各修飾子を使用する時期

  • new派生クラスのメソッドと名前を共有している場合でも、派生クラスに完全に個別のメソッドが必要な場合は

    使用します。 これは、意図しないオーバーライドを回避し、明確な機能を維持するのに役立ちます。
  • 使用overrideベースクラスで定義された仮想メソッドの動作を拡張または変更する場合、その特定の方法の継承関係を維持しながら、派生クラス内で専門的な実装を提供します。

これらの区別を理解することにより、C#アプリケーションで継承と多型を効果的に利用できます。

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

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