ソフトウェア開発プロセスにおける明確性は、特にオブジェクト指向プログラミングに関しては、ますます重要になってきている。このプログラミングスタイルの中心的な側面は、 ポリモーフィズム です。アプリケーション・ロジックをより深く理解することで、より柔軟で保守性の高いプログラムを作成することができます。一緒にポリモーフィズムの世界に飛び込み、実践的な例を通してその概念を体験してみましょう。

主な学習内容

ポリモーフィズムは、オブジェクトをさまざまな形で表現することを可能にします。これは、メソッドの上書きやオーバーロードによって行われます。主な概念は以下の通りです:

  • 基底クラスでの仮想メソッドの使用
  • サブクラスでの「オーバーライド」の使用
  • オブジェクトのキャストの概念
  • 新しい関数を追加することによる機能拡張

ステップ・バイ・ステップ・ガイド

ステップ1:ポリモーフィズム入門

C#のポリモーフィズムを 理解する ために、まずその基礎となる概念を見てみましょう。この用語はギリシャ語に由来し、「多くの形」を意味します。オブジェクト指向プログラミングでは、基本クラスのメソッドはサブクラスでオーバーライドもオーバーライドもできるという考え方です。これにより、実装を再定義しながら共通のインターフェースを使用することができます。

C#のポリモーフィズムを実践例で理解する

ステップ2:構造の作成

基底クラスを定義する基本構造から始めます。今回はAutoというクラスを使います。このクラスには、"TÜV "というメソッドも含める。このメソッドは基本クラスで宣言されていますが、まだ実装されていません。

C#のポリモーフィズムを実践例で理解する

ステップ 3: サブクラスの定義

次にサブクラスCarとLorryを作成する。それぞれのサブクラスは、基底クラス Car を継承しなければなりません。これらのクラスでは、キーワード override を使用して TÜV メソッドを実装します。これにより、各サブクラスがそれぞれ固有のロジックを持つことができるように、 ベースクラスのメソッドを適応させる。

C#のポリモーフィズムを実践例で理解する

ステップ 4: 仮想メソッドの実装

サブクラスで TÜV メソッドをオーバーライドする前に、キーワー ド virtual をベースクラスで定義する必要がある。これは、ベースクラスに対して、そのメソッドを上書 きしてもよいことを知らせるものである。

ステップ5:オブジェクトのリストの作成

ポリモーフィズムをさらに探求するために、車とローリーの両方のオブジェクトを格納できるリストを設定します。C#では、Listデータ型を使ってこれを行うことができます。ジェネリック・コレクション用の正しいUsingディレクティブを追加してください。

ステップ6:リストにオブジェクトを追加する

次に、このリストに複数の自動車と貨物車のオブジェクトを作成することができます。これらのオブジェクトは、コレクション内でカンマで区切られます。型が異なっていても、リスト内のすべてのオブジェクトは基底クラスCarの型を共有していることを知っておくことが重要です。

ステップ7:ポリモーフィズムの呼び出し

リストができたので、これらのオブジェクトを繰り返し処理するforeachループを作成します。オブジェクトが処理されるたびに、TÜV メソッドを呼び出す。オブジェクトのタイプに応じて、サブクラス固有の実装が使用される。

ステップ 8: 結果の分析

プログラムを実行し、出力を観察する。どの車がいつMOTを受けたかが表示される。ポリモーフィズムによって、ベースクラスのメソッドではなく、それぞれのサブクラスのMOTメソッドが呼び出されることが保証されます。

ステップ9:"override "の効果をテストする

オーバーライドキーワードを一時的にカークラスから削除することで、オーバーライドキーワードがどのように機能するかを明確にします。プログラムが再び実行されたとき、何が見えますか?ベースクラスのメソッドが呼び出され、オーバーライドがいかに重要であるかがわかります。

C#のポリモーフィズムを実践例で理解する

ステップ10:アプリケーションの拡張

ポリモーフィズムの理解を深めるために、refuelのような新しいメソッドを作り、同じようなステップを実行することができます。自分のアプローチの柔軟性を確認し、概念を練習し続けましょう。

まとめ - C#のポリモーフィズム:理解と実践的な応用のためのガイド

ポリモーフィズムはオブジェクト指向プログラミングの基本的な概念で、柔軟で拡張性の高いソフトウェアを書くことができます。仮想メソッドの使用とサブクラスのメソッドの上書きは、コードの再利用性と保守性を向上させます。ここでは、基底クラスとそのサブクラスを作成し、オブジェクトをリストで管理し、ポリモーフィックな方法で効果的に呼び出す方法を学びました。

よくある質問

キーワード virtual はどのように使うのですか?キーワード virtual は、メソッドがサブクラスでオーバーライドできることを示すためにベースクラスで使用します。

キーワード override は何をするのですか?override は、サブクラスがベース・クラスのメソッドを再定義できるようにします。

異なるタイプのオブジェクトのリストを作成するにはどうすればよいですか?リスト・タイプを使用すると、car と lorry の両方のオブジェクトをリストに格納できます。

オーバーライドを削除するとどうなりますか?オーバーライドを削除すると、ベース・クラスのメソッドが実行され、サブクラスの実装は実行されません。

ポリモーフィズムがどのように機能するかを確認するために、新しいメソッドを作成したり、異なるオブジェクトを追加したりすることができます。