Pythonで理解する継承とポリモーフィズムの基本

この記事では、Pythonを用いてプログラミングの重要な概念である継承とポリモーフィズムについて解説します。具体的なコード例とその解説、応用例を含めています。

目次

継承とは?

継承は、既存のクラス(親クラス)の機能を新しいクラス(子クラス)が引き継ぐ概念です。これにより、コードの再利用が容易になり、保守性も向上します。

# 親クラス
class Animal:
    def sound(self):
        return "何かの音"

# 子クラス
class Dog(Animal):
    def sound(self):
        return "ワンワン"

コード解説

– `Animal`クラスが親クラスです。
– `Dog`クラスは`Animal`クラスを継承しています。
– `sound`メソッドがオーバーライドされています。

ポリモーフィズムとは?

ポリモーフィズムは、異なるクラスのオブジェクトを同一のインターフェースで扱う能力です。具体的には、異なるクラスでも同名のメソッドを持つことで、その違いを抽象化できます。

# 異なるクラスで同名のメソッドを持つ
class Cat(Animal):
    def sound(self):
        return "ニャー"

def animal_sound(animal):
    print(animal.sound())

# ポリモーフィズムの例
dog = Dog()
cat = Cat()

animal_sound(dog)  # 出力: ワンワン
animal_sound(cat)  # 出力: ニャー

コード解説

– `Cat`クラスも`Animal`クラスを継承しています。
– `animal_sound`関数は、どんな動物クラスのオブジェクトでも受け取れます。
– `Dog`と`Cat`のオブジェクトを同一の関数で扱っています。

応用例

例1: 違う属性を持つ子クラス

# 子クラスに追加属性を持たせる
class Dog(Animal):
    def __init__(self, breed):
        self.breed = breed
    def sound(self):
        return f"{self.breed}の音はワンワン"

例2: 複数の親クラス

# 複数の親クラスを継承
class Pet:
    def show_affection(self):
        return "愛情を示す"

class Dog(Animal, Pet):
    pass

dog = Dog()
print(dog.show_affection())  # 出力: 愛情を示す

例3: 抽象クラス

from abc import ABC, abstractmethod

# 抽象クラスを定義
class AbstractAnimal(ABC):
    @abstractmethod
    def sound(self):
        pass

# 抽象クラスを継承
class Dog(AbstractAnimal):
    def sound(self):
        return "ワンワン"

まとめ

Pythonでの継承とポリモーフィズムには多くの応用可能性があります。これらの概念を理解して活用することで、コードの再利用性と可読性が大幅に向上するでしょう。

コメント

コメントする

目次