ポリモーフィズムは、継承とカプセル化と並び、オブジェクト指向プログラミングにおける三大要素の一つとされています。オブジェクト指向では、親クラスで定義された共通のメソッド(例えば、先ほどの例の「鳴く」)を、子クラス側で独自の処理として再定義(オーバーライド)することが一般的です。このオーバーライドという技術こそがポリモーフィズムを実現するための具体的な手段となります。
さらに踏み込むと、ポリモーフィズムには「静的ポリモーフィズム」と「動的ポリモーフィズム」の二つの種類が存在します。静的ポリモーフィズムの代表例は「オーバーロード」です。これは、引数の型や数が異なる同名のメソッドを複数定義し、コンパイル時にどのメソッドを呼び出すかを決定する仕組みです。一方、動的ポリモーフィズムは「オーバーライド」によって実現され、プログラムの実行時に、実際に生成されたインスタンス(オブジェクト)の種類に応じて適切なメソッドが選択されます。
このように、ポリモーフィズムを活用することで、プログラム内に「もし犬だったら〜する、もし猫だったら〜する」というような複雑な条件分岐(if文やswitch文)を大量に書く必要がなくなり、オブジェクト自身が自らの振る舞いを決定できるため、プログラムの保守性や拡張性が飛躍的に向上します。新しい動物(オブジェクト)を追加したい場合も、既存のプログラムをほとんど修正することなく、新しいクラスを定義するだけでシステムを拡張できるのです。