この記事では、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での継承とポリモーフィズムには多くの応用可能性があります。これらの概念を理解して活用することで、コードの再利用性と可読性が大幅に向上するでしょう。
コメント