ポリモーフィズムの前提知識

ポリモーフィズムは多態性、多様性などとも呼ばれます。ポリモーフィズムを実現させるためには次のような特徴を理解しておく必要があります。

Javaは、クラスを作成すると暗黙のうちにObjectクラスのサブクラスとなります。つまり、Objectクラスのメソッドをどのクラスでも使用することができるわけです。どのようなメンバーで構成されているか「Java SE API & ドキュメント」で確認してみましょう。このような仕組みとなっているので、Object型の変数にはどんな種類のオブジェクトでも格納することができます。Object型は汎用型とも言えます。

次のサンプルでは、車とバスのクラスのオブジェクトをCar型の変数に代入して、動作を確認します。

○ ファイル

次のようにファイルを作成してください。

ファイル名 PolymorphismTest.java

サンプルダウンロード

○ プログラム

次のようにプログラムを記述してください。

PolymorphismTest.java

  1. public class PolymorphismTest{
  2.     public static void main(String[] args) throws Exception{
  3.         //Carクラス型の変数を用意
  4.         Car obj;
  5.         //Carオブジェクトを生成
  6.         obj = new Car();
  7.         System.out.println("車のガソリン量:" + obj.getGas() + "L");
  8.         //Busオブジェクトを生成
  9.         obj = new Bus();
  10.         System.out.println("バスのガソリン量:" + obj.getGas() + "L");
  11.     }
  12. }

○ コンパイルと実行

C:¥work>javac PolymorphismTest.java
C:¥work>java PolymorphismTest
車のガソリン量:20.0L
バスのガソリン量:100.0L

C:¥work>

○ 解説

4行目では、Carクラス型の変数を宣言しています。そして7行目では、Carオブジェクトを生成して格納しています。ここでの使い方には変わった点はありません。

Car型の変数にCarオブジェクトを代入
Car型の変数にCarオブジェクトを代入

11行目では、Busオブジェクトを生成して、Car型の変数に格納しています。BusクラスはCarクラスを継承しているので、このような記述が可能です。12行目ではガソリン残量を参照しています。Carクラスで定義しているメンバーを利用することができます。ただし、Busクラスで定義しているメンバーは利用できません。

Car型の変数にBusオブジェクトを代入
Car型の変数にBusオブジェクトを代入

このように、一つの変数にいろいろな種類のオブジェクトを格納することができます。これを利用してポリモーフィズムを実現させます。

前へ   次へ