Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ ポリモーフィズムの導入 | セクション
Pythonにおけるオブジェクト指向プログラミング

bookポリモーフィズムの導入

メニューを表示するにはスワイプしてください

Note
定義

ポリモーフィズム(多態性)は、オブジェクト指向プログラミングの基本原則の一つであり、異なる型のオブジェクトを共通のインターフェースを通じて同じ型として扱うことを可能にします。これにより、コードの柔軟性が高まり、保守拡張が容易になります。

ポリモーフィズムは、異なるオブジェクトが同じメソッド呼び出しに対して、それぞれ独自の方法で応答するイメージです。例えば、異なる動物に対してspeak()メソッドを呼び出すと、次のような結果が得られます:

  • Dog"Woof!"を返す;
  • Cat"Meow!"を返す;
  • Cow"Moo!"を返す。

メソッド名は同じですが、各オブジェクトが独自の実装を提供します。

Note
注意

ポリモーフィズムがない場合、コードは個別の関数や複雑な条件分岐が必要となり、拡張が困難で重複や保守の問題が発生しやすくなります。

Python は複数の形式の ポリモーフィズム をサポートしており、それぞれがオブジェクトに共通のインターフェースを持たせつつ、独自の振る舞いを可能にします。

ダックタイピング
expand arrow

オブジェクトの ではなく、その持つ 振る舞い(メソッドや属性)に基づいて利用できる仕組み。

メソッドのオーバーライド
expand arrow

サブクラス が親クラスから継承したメソッドに対して 独自の実装 を提供し、特化した振る舞いを実現する仕組み。

演算子のオーバーロード
expand arrow

カスタムオブジェクトに対して 演算子+, -, * など)の動作を再定義し、自然で直感的な使い方 を可能にする仕組み。

抽象基底クラス(ABCs)
expand arrow

サブクラスが従うべき 正式な契約 を定義し、実装間での 一貫性構造化された設計 を保証する仕組み。

現実世界の メディアプレーヤー の例を考えます。MediaPlayer クラスは、AudioFileVideoFileImageFile のいずれを扱っているかを知る必要はありません。ただ各メディアオブジェクトに対して play() メソッド を呼び出すだけで、それぞれの型が適切な方法で再生を処理します。これこそが ポリモーフィズム の特徴です。

question mark

OOPにおけるポリモーフィズムの主な目的は何ですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  19

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 1.  19
some-alt