ホームページ > バックエンド開発 > C#.Net チュートリアル > C# でのメソッドのオーバーライド

C# でのメソッドのオーバーライド

PHPz
リリース: 2024-09-03 15:13:36
オリジナル
1129 人が閲覧しました

メソッドのオーバーライドは、C# プログラミングで一般的に使用される関数演算であり、派生クラスを利用して基本クラスで定義された演算をオーバーライドする必要があります。オーバーライドを成功させるには、メソッドは静的メソッドであることが期待され、メンバー分類とアクセス修飾子は基本メソッドと派生メソッドの両方で同じ型である必要があり、オーバーライドは派生クラスにのみ適用でき、基本クラスには適用できません。メソッドのオーバーライドに指定されている他の名前は、実行時ポリモーフィズム、動的ポリモーフィズム、遅延バインディングです。

C# でのメソッドのオーバーライド

C# でオーバーライドを使用する方法?

アプリケーションに、派生クラスの基本クラス メソッドの動作を変更する要件があるとします。その場合は、メソッドのオーバーライドを行う必要があります。これを実現するには、別のタスクを実行するために、基本クラスで同じシグネチャを持つメソッドを派生クラスで作成する必要があります。  オーバーライド手法の使用方法を学ぶ前に、以下の点に留意する必要があります。

  • C# プログラミングでは、メソッド オーバーライドは、実行時ポリモーフィズム、遅延バインディング、または動的ポリモーフィズムとも呼ばれます。
  • メソッドのオーバーライドは派生クラスでのみ可能です。派生クラスでは基本クラスからメソッドがオーバーライドされるためです。
  • メソッドは、オーバーライド用の非仮想メソッドまたは静的メソッドである必要があります。
  • オーバーライド メソッドと仮想メソッドの両方のアクセス レベル修飾子は同じである必要があります。

オーバーライド宣言によってオーバーライドされるメソッドをオーバーライド基本メソッドと呼びます。これは基本クラスに存在します。オーバーライドされる基本メソッドは、抽象メソッド、オーバーライド メソッド、または仮想メソッドのいずれかになります。新しい実装が呼び出され、オーバーライド メソッドがこの基本クラスから継承されます。

メソッドのオーバーライドには別のキーワードを使用します。彼らは、

1.仮想キーワード

コンパイラはプログラム内で virtual キーワードに遭遇すると、このメソッドがその派生クラスのいずれかによってオーバーライドされる可能性があることを理解します。構造は以下の通りです。

public virtual int EnemyHealth()
{
Console.WriteLine("Enemy Health");
}
ログイン後にコピー

2.キーワードを上書き

これは派生クラスに存在します。これは、このメソッドが基本クラス内の同じ名前とシグネチャを持つメソッドをオーバーライドしていることをコンパイラーに伝えます。

public override int EnemyHealth ()
{
Console.WriteLine("Enemy 1");
}
ログイン後にコピー

まず、Virtual および override キーワードを使用せずに例を見てみましょう。

コード:

class Birds
{
public void Color( )
{
Console.WriteLine("Birds will have different Colors");
}
}
class Parrot:Birds
{
public void Color( )
{
Console.WriteLine("Parrot is Green");
}
}
class ExecutionClass
{
public static void Main( )
{
Birds object;
object = new Birds( );
object .Color( );
object = new Parrot( );
object.Color( );
}
}
ログイン後にコピー

出力:

C# でのメソッドのオーバーライド

上記の例では、派生クラス Parrot のオブジェクトを作成し、その参照を Birds 型の参照変数オブジェクトに保存しました。

次のステップでは、参照変数オブジェクトを使用して関数 Color () を呼び出します。 object には Parrot 型のオブジェクトへの参照が含まれているため、Parrot クラスの関数 Color () が実行されることが期待されるのは当然です。しかし、私たちは間違っています。プログラムの美しさによって、そんなことは起こりません。

驚いたことに、実行されるのは Birds クラスの Color() メソッドです。これは、関数が参照変数オブジェクトが参照するものではなく、参照のタイプに基づいて呼び出されるからです。オブジェクトは Birds 型の参照であるため、オブジェクトが誰を参照しているかに関係なく、クラス Birds の関数 Color () が呼び出されます。

次に、同じプログラムを virtual と override で書き直してみましょう。今回は理解を深められるよう、段階的に進めていきます。

任意の名前で基本クラスを作成します。ここではBirdsを使用しています。 virtual キーワードを使用してメソッドを作成します。これはオーバーライドされたメソッドとなり、継承されたクラスでオーバーライドされます。メソッド内に、コンソールに表示するメッセージを記述します。

class Birds
{
public virtual void Color( )
{
Console.WriteLine("Birds will have different Colors");
}
}
ログイン後にコピー

次に、もう 1 つのクラス Parrot を作成します。今回は、以前に作成した基本クラス、つまり Birds からそれを継承します。継承するには「:」記号を使用します。

クラス オウム: 鳥

ここでは、override キーワードを含む関数を記述し、メッセージを記述します。派生クラスのメソッド名とシグネチャが基本クラスのメソッド名とシグネチャと一致していることを確認してください。

public override void Color ( )
{
Console.WriteLine("Parrot is Green");
}
ログイン後にコピー

オーバーライドをチェックする機能を実行するには、もう 1 つのクラスが必要です。任意の名前でクラスを作成します。その中に Main 関数を記述します。

class ExecutionClass
{
public static void Main( )
{
}
}
ログイン後にコピー

親クラスのオブジェクトを作成し、そのクラスのオブジェクトを使用して関数をトリガーします。これにより、Birds クラスに存在する Color メソッドが呼び出されます。

Birds object;
object = new Birds( );
object .Color( );
ログイン後にコピー

次に、派生クラスのオブジェクトを作成し、Color メソッドを呼び出します。これにより、Parrot クラスの Color メソッドが呼び出されます。

object = new Parrot( );
object.Color( );
ログイン後にコピー

プログラムを実行したときの出力を推測できますか?これは以下のようになります。

出力:

C# でのメソッドのオーバーライド

キーワード オーバーライドと仮想により、メソッド名とシグネチャが同じであっても、いつでも基本クラスと派生クラスのメソッドを個別に呼び出すことができます。

結論

この記事では、メソッドのオーバーライド、メソッドのオーバーライドの必要性、オーバーライドの原則の実世界の例、それを実現する方法、virtual キーワードと override キーワードを使用する必要性、およびコードを使用したオーバーライドの例について理解しました。 。オーバーライドは、派生クラスの基本クラス メソッドの動作を変更できるポリモーフィズムの便利な機能の 1 つであると結論付けることができます。

以上がC# でのメソッドのオーバーライドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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