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

ポリモーフィズムは、オブジェクト指向プログラミングにおいて、異なるクラスのオブジェクトが、同じインターフェースを通じて異なる振る舞いを示すことができる性質のことです。

ポリモーフィズムの概要と目的

ポリモーフィズム(Polymorphism)は、ギリシャ語の「poly(多くの)」と「morph(形)」に由来し、日本語では「多様性」と訳されます。

これは、1つのメソッド(操作)が、それを受け取るオブジェクトのクラスによって異なる動作をするという性質を指します。これにより、開発者は特定のクラスに依存することなく、より汎用的で柔軟なコードを書くことができます。

例えば、draw()というメソッドが、Circleクラスのオブジェクトでは円を描き、Squareクラスのオブジェクトでは四角形を描くといった振る舞いを実現します。

主な目的は、コードの再利用性を高め、保守を容易にし、拡張性を向上させることです。ポリモーフィズムは、オブジェクト指向の3大原則(カプセル化、継承、ポリモーフィズム)の一つとされています。

ポリモーフィズムの実現方法

ポリモーフィズムは、主に以下の2つの方法で実現されます。

1. メソッドのオーバーライド(Override)

  • 概要: 親クラス(スーパークラス)で定義されたメソッドを、子クラス(サブクラス)で再定義することです。
  • 動作: 親クラスのメソッドを継承しつつ、子クラス独自の振る舞いを実装します。これにより、同じメソッド名を持つ複数のメソッドが、オブジェクトの型に応じて呼び分けられます。
  • : AnimalクラスにmakeSound()メソッドがあり、DogクラスとCatクラスがそれぞれこれをオーバーライドして、異なる鳴き声を出力するようにします。

2. メソッドのオーバーロード(Overload)

  • 概要: 同じクラス内で、同じ名前のメソッドを複数定義し、引数の数や型を変えることです。
  • 動作: コンパイラは、呼び出し時に渡された引数に基づいて、どのメソッドを使用するかを自動的に判断します。
  • : print()というメソッドが、print(int value)(整数を出力)とprint(String text)(文字列を出力)のように定義される場合です。

3. インターフェース

  • 概要: 実装を持たないメソッドの集合を定義したものです。複数のクラスが同じインターフェースを実装することで、ポリモーフィズムを実現できます。
  • 動作: 異なるクラスが同じインターフェースを実装すれば、インターフェースの型としてこれらのオブジェクトを扱えます。
  • : Movableというインターフェースにmove()メソッドを定義し、CarクラスとBicycleクラスがこれを実装することで、どちらも同じように動かすことができます。

ポリモーフィズムは、複雑なシステムをよりシンプルに、そして柔軟に設計するための強力な武器となります。

関連用語

メソッド | 今更聞けないIT用語集
オブジェクト指向プログラミング | 今更聞けないIT用語集
ソフトウェアエンジニアリング

APPSWINGBYの

ソリューション

APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。

システム開発

クラウドネイティブ技術とアジャイル手法を駆使し、市場投入スピード(Time-to-Market)を最大化。「進化し続けるアプリケーション」を開発します。初期リリースを最速化し、拡張性と柔軟性を備えた、ビジネスの成長に追従できるアプリケーションを開発します。

DX・AI戦略支援

「何から手を付けるべきか分からない」「AIを導入したいが、費用対効果が見えない」といった経営課題に対し、技術とビジネスの両面から解を導き出します。 絵に描いた餅で終わる戦略ではなく、エンジニアリングの実装能力に基づいた、「実現可能で、勝てる技術戦略」を策定します。


リファクタリング・リアーキテクチャ

「システムが古くて改修できない」「障害が頻発する」といった技術的負債を解消します。既存資産の徹底的な診断に基づき、コードのクリーン化(リファクタリング)や、クラウドへの移行(リアーキテクチャ)を行い、システムの寿命を延ばしコストを最適化します。

お問い合わせ・ご相談

「システム構築時から大分時間が経過しているのでセキュリティ対策の状況が不安がある」「脆弱性診断を受けたい」「サイバーセキュリティ対策に不安がある。」など、サイバーセキュリティ対策・情報漏えい対策についてのご質問・ご相談などございましたら、何でもお気軽にお問い合わせください。