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 クラスは、AudioFileVideoFile、または ImageFile のいずれを扱っているかを知る必要はありません。単に各メディアオブジェクトの play() メソッド を呼び出すだけで、それぞれの型が再生処理を 適切な方法で 実行します。これこそが ポリモーフィズム によって可能となることです。

question mark

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

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

すべて明確でしたか?

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

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

セクション 1.  19

AIに質問する

expand

AIに質問する

ChatGPT

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

セクション 1.  19
some-alt