ポリモーフィズムは多態性、多様性などとも呼ばれます。ポリモーフィズムを実現させるためには次のような特徴を理解しておく必要があります。
VC#は、クラスを作成すると暗黙のうちにObjectクラスのサブクラスとなります。つまり、Objectクラスのメソッドをどのクラスでも使用することができるわけです。どのようなメンバで構成されているかMSDNライブラリーで確認してみましょう。このような仕組みとなっているので、Object型の変数にはどんな種類のオブジェクトでも格納することができます。Object型は汎用型とも言えます。
次のサンプルでは、車とバスのクラスのオブジェクトをCar型の変数に代入して、動作を確認します。
○ プロジェクト
プロジェクトを作成して確認してみましょう。
プロジェクトの種類 | コンソール アプリケーション |
---|---|
プロジェクト名 | PolymorphismTest |
○ 作成の準備
「OverrideTest」プロジェクトより、Car.csとBus.csをコピーしてプロジェクトに追加してください。(2.3で作成した「InstanceTest」プロジェクトの作成方法を参考にしてください。)
○ プログラム
次のようにMainメソッドにプログラムを追加してください。
Program.cs
○ 実行結果
車のガソリン量:20L
バスのガソリン量:100L
○ 解説
14行目でCarクラス型の変数を宣言しています。そして17行目では、Carオブジェクトを生成して格納しています。ここでの使い方には変わった点はありません。21行目では、Busオブジェクトを生成して、Car型の変数に格納しています。BusクラスはCarクラスを継承しているので、このような記述が可能です。22行目ではガソリン残量を参照しています。Carクラスで定義しているメンバを利用することができます。ただし、Busクラスで定義しているメンバは利用できません。
このように、一つの変数にいろいろな種類のオブジェクトを格納することができます。これを利用してポリモーフィズムを実現させます。