このページをはてなブックマークに追加このページを含むはてなブックマーク このページをlivedoor クリップに追加このページを含むlivedoor クリップ

ポリモーフィズム(多態性)

  • 同じ名前のメソッドを持つクラスたちにより、多くの形態に変化できる仕組み。これにより、プログラムをシンプルにすることができる。
  • 継承でクラスをグループ化して、スーパークラスとサブクラスのメソッドのI/Fを揃え、さらにメソッドの中身を書き換えて(オーバーライド)、異なる動作を定義できる。これによって、多態性を実現できる。
  • 同類のオブジェクトに同じメッセージを送ったとき、受け手のオブジェクトによって、それぞれのオブジェクトに適切な処理を実行すること。言い換えると、同じメソッドを呼び出しているにもかかわらず、実行時に呼び出すべきメソッドを変化させることができる。
    • スーパークラスを継承しているサブクラスのインスタンスへの参照は、スーパークラスを参照している変数に格納できるという仕組みを利用している。
      • この仕組みにより、あらかじめスーパークラスを参照する変数の宣言だけをしておいて、プログラムの実行時に実現したい機能を持つ(スーパークラスを継承した)サブクラスをインスタンス化すればよいのである。

ポリモーフィズムの利点

  • プログラムが簡潔になる。
    • もしポリモーフィズムを使わずに同様のことを実現しようとすると、条件構造などを用いることになり、コードの量が増えてしまう。
  • プログラムの安全性が向上する。
    • 実行するクラスはすべてスーパークラスを継承したサブクラスだけなので、不正な処理が起こりにくくなる。
  • 拡張性が高くなる。
    • 実行する処理の種類を増やしたければ、スーパークラスを継承したサブクラスを作るだけでよい。

参考文献

  • 『10日でわかるオブジェクト指向』