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

ポリモーフィズムの紹介

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

Note
定義

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

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

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

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

Note
注意

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

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

ダックタイピング
expand arrow

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

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

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

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

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

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

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

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

question mark

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

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

すべて明確でしたか?

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

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

セクション 1. 章 19

AIに質問する

expand

AIに質問する

ChatGPT

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

ポリモーフィズムの紹介

Note
定義

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

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

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

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

Note
注意

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

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

ダックタイピング
expand arrow

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

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

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

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

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

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

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

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

すべて明確でしたか?

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

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

セクション 1. 章 19
some-alt