継承は、オブジェクト指向プログラミングの重要な概念の一つで、既存のクラス(親クラスまたは基底クラス)の特性を新しいクラス(子クラスまたは派生クラス)が引き継ぐことを指します。これにより、コードの再利用性が向上し、プログラムの構造が整理されます。
以下は、継承を利用した基本的なクラスの例です。この例では、動物(Animal)クラスを親クラスとして、犬(Dog)クラスと猫(Cat)クラスを子クラスとして定義します。
# 親クラス: 動物
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
raise NotImplementedError("このメソッドはサブクラスで実装する必要があります。")
# 子クラス: 犬
class Dog(Animal):
def speak(self):
return f"{self.name}はワンワンと鳴きます。"
# 子クラス: 猫
class Cat(Animal):
def speak(self):
return f"{self.name}はニャーニャーと鳴きます。"
# インスタンスを作成
dog = Dog("ポチ")
cat = Cat("ミケ")
# メソッドを呼び出す
print(dog.speak()) # ポチはワンワンと鳴きます。
print(cat.speak()) # ミケはニャーニャーと鳴きます。
Animalクラス: このクラスは親クラスで、動物の基本的な特性を持っています。speak
メソッドは、サブクラスで実装する必要があることを示すため、NotImplementedError
を発生させています。
DogクラスとCatクラス: これらのクラスは Animal
クラスを継承しています。speak
メソッドをオーバーライドし、それぞれの動物に特有の鳴き声を返すように実装しています。
インスタンスの作成とメソッドの呼び出し: Dog
と Cat
のインスタンスを作成し、speak
メソッドを呼び出すことで、それぞれの動物の鳴き声を出力しています。
継承を使うことで、コードの再利用や拡張性を高めることができます。親クラスで定義した機能を子クラスで引き継ぎ、必要に応じて特定の機能をオーバーライドすることができます。この基本的な概念を理解することで、より複雑なオブジェクト指向プログラミングの技術を学ぶための土台を築くことができます。