ポリモーフィズム(多態性)は、異なるクラスのインスタンスが同じメソッドを持ち、異なる動作をすることを指します。これにより、同じインターフェースを通じて異なるオブジェクトを扱うことができ、コードの柔軟性と再利用性が向上します。
ポリモーフィズムは、次の2つの原則に基づいています:
以下に、ポリモーフィズムの基本的な例を示します。この例では、Animal
という基底クラスと、Dog
およびCat
という派生クラスを作成します。それぞれのクラスは、speak
というメソッドを持ち、異なる動作をします。
class Animal:
def speak(self):
raise NotImplementedError("このメソッドはサブクラスで実装する必要があります。")
class Dog(Animal):
def speak(self):
return "ワンワン"
class Cat(Animal):
def speak(self):
return "ニャー"
def animal_sound(animal):
print(animal.speak())
# インスタンスを作成
dog = Dog()
cat = Cat()
# ポリモーフィズムを利用
animal_sound(dog) # 出力: ワンワン
animal_sound(cat) # 出力: ニャー
Animalクラス: 基底クラスであり、speak
メソッドはサブクラスで実装する必要があることを示すために、NotImplementedError
を発生させています。
DogクラスとCatクラス: Animal
クラスを継承し、それぞれspeak
メソッドをオーバーライドしています。Dog
クラスでは「ワンワン」を、Cat
クラスでは「ニャー」を返します。
animal_sound関数: 引数としてAnimal
クラスのインスタンスを受け取り、speak
メソッドを呼び出します。この関数は、どの動物が渡されてもその動物の鳴き声を出力します。
インスタンスの生成と関数の呼び出し: Dog
とCat
のインスタンスを作成し、animal_sound
関数を呼び出すことで、ポリモーフィズムが実現されています。
ポリモーフィズムを活用することで、プログラムの設計がより直感的かつ柔軟になります。今後の学習では、ポリモーフィズムを使った設計パターンや実践的なアプローチについても学んでいきましょう。