多態性と抽象型
ここまで、目的の処理を正しく実現するプログラムを記述するための方法として、構造化プログラミングとはどういうものかについて触れ、 仕様変更に強いプログラム(再利用性・保守性が高いプログラム)を作成するための方法として、クラスと呼ばれるプログラミング構造を触れてきました。
前の節では、クラス構造は継承を使うことで、上位と下位の概念の階層を定義できることを示しました。 ですが、単に概念の階層化を定義しただけで、保守性や再利用性を高めることに繋がるとは限りません。 保守性や再利用性を高めるためには、多態性と呼ばれる階層化した概念が持つ性質を活かす必要があります。
多態性(Polymorphism)とは、継承を軸としたクラスとオブジェクトを駆使するオブジェクト指向プログラミングにおける最も根幹となる仕組みです。
この節では、多態性とはどのようなものか、継承によって定義されるスーパークラス、サブクラスといった概念の階層をより抽象的に実現するための仕組みである、抽象クラス(Abstract class)、インタフェース(Interface)に触れていきます。