抽象クラス抽象クラスポリモーフィズムを実現させるにはいくつかの方法があります。ここでは、抽象クラスについてみてみましょう。抽象クラスは、抽象メソッドを含むクラスです。抽象メソッドとは、処理を定義していないメソッド、つまり、メソッド名、引数リスト、戻り値の型のみ宣言されているメソッドです。抽象メソッドは「abstract」キーワードをつけて宣言します。メソッド名(引数リスト);抽象メソッドを持つクラスは具現化しないと使えないため、クラスに「abstract」キーワードをつける必要があります。それにより、抽象クラスとします。クラス名{各種定義...}抽象クラスはインスタンスを生成できません。別のクラスで継承し、抽象メソッドをオーバーライドして利用することができるようになります。ファイル次のようにファイルを作成してください。プログラム抽象クラスを作成しましょう。今回は乗り物を表すクラスを作成します。今まで作成したCarクラスを乗り物(Vehicle)クラスとして、加速処理部分を抽象化したクラスを作成することとします。これにより加速部分はそれぞれの種類の乗り物によって定義することになります。Vehicleクラスを追加して、次のようにプログラムを記述してください。解説18行目では、抽象メソッドを宣言しています。メソッドの仕様は決まっているので、このメソッドを使用するにはオーバーライドして処理を実装する必要があります。抽象メソッドが含まれるために1行目のクラスの宣言に「abstract」キーワードがついており、抽象クラスとして作成しています。ファイル次のようにファイルを作成してください。プログラム次に、乗り物クラスを継承したスポーツカークラスを作成しましょう。解説3行目と4行目では最大スピードと、ガソリンタンク容量を定数として宣言しています。7~13行目ではコンストラクタを定義しています。このコンストラクタはガソリン量を受けとって、スーパークラスのコンストラクタを呼び出し、ガソリン量をセットしています。そのあと、ガソリンタンク容量と比較して、セットしたガソリン量が多ければ最大容量をセットするという処理をします。16~29行目ではspeedUpメソッドをオーバーライドしています。抽象クラスを継承すると、抽象メソッドは強制的にオーバーライドしなければなりません。今回は加速するときに、消費するガソリン量がない場合は加速しない、最大スピードに達していた場合はそれよりスピードが出ないようにしています。ファイル次のようにファイルを作成してください。プログラムでは次にSportsCarクラスを利用するプログラムを作成しましょう。次のように記述してください。解説33行目では、SportsCarオブジェクトのspeedUpメソッドを呼び出しています。このメソッドはSportsCarクラスでオーバーライドされています。それにより、SportsCarで定義されているspeedUpが実行されます。