オブジェクト指向プログラミングには、「ポリモーフィズム(多態性)」という、ちょっとカッコいい名前の考え方があるよ。
「ポリモーフィズム」というのは、「いろいろな形に変化する能力」という意味なんだ。プログラミングでは、「同じ名前のメソッドでも、それが呼ばれるオブジェクトの種類によって、違う動きをする」ことだよ。
これは、さっき学んだ「メソッドのオーバーライド」ととても関係が深いんだ。
例えば、動物園で考えてみよう。どんな動物も「鳴く」という行動をするよね。でも、犬は「ワンワン」と鳴くし、猫は「ニャーニャー」と鳴く。同じ「鳴く」という行動でも、動物の種類によって鳴き方が違うよね。
これがポリモーフィズムなんだ!
# 親クラス:Animal(動物)
class Animal:
def make_sound(self):
print("動物が音をたてた。")
# 子クラス:Dog(犬)
class Dog(Animal):
def make_sound(self):
print("ワンワン!")
# 子クラス:Cat(猫)
class Cat(Animal):
def make_sound(self):
print("ニャーニャー!")
# いろんな動物をリストに入れてみるよ
animals = [Animal(), Dog(), Cat()]
# それぞれの動物にmake_soundメソッドを呼び出してみよう
for animal in animals:
animal.make_sound()
# 出力:
# 動物が音をたてた。
# ワンワン!
# ニャーニャー!
リストに入っているのは、Animal
、Dog
、Cat
という異なる種類のオブジェクトだけど、どれも「make_sound()
」という同じ名前のメソッドを持っているから、同じように呼び出すことができるよね。そして、それぞれのオブジェクトが、自分の種類に合った鳴き方をしている。
これがポリモーフィズムの力なんだ!プログラムを書くときに、いちいち「これは犬だからこうする、猫だからこうする」って条件分岐を書かなくても、同じメソッドを呼び出すだけで、オブジェクトが自分に合った動きをしてくれるようになるんだよ。
ポリモーフィズムをうまく使うと、プログラムがもっとシンプルになって、新しい種類のオブジェクトを追加するのも簡単になるんだ。すごいよね!