継承

継承(Inheritance)は、オブジェクト指向プログラミング(OOP)の基本的な概念の一つで、新しいクラス(サブクラスまたは派生クラス)が既存のクラス(スーパークラスまたは基底クラス)の属性やメソッドを受け継ぐプロセスを指します。継承により、既存のクラスのコードを再利用し、新しいクラスを効果的に定義できます。継承には以下の基本的な特徴があります:

  1. スーパークラスとサブクラス: スーパークラスは、継承元のクラスであり、サブクラスは継承を受けるクラスです。サブクラスは、スーパークラスの属性やメソッドを受け継ぎます。

  2. 属性とメソッドの受け継ぎ: サブクラスはスーパークラスの属性(データメンバ)とメソッド(関数)を受け継ぎます。これにより、サブクラスはスーパークラスの機能を拡張したり、カスタマイズしたりできます。

  3. クラス階層の構築: 継承を使用すると、クラス階層を構築できます。複数のレベルのサブクラスを作成し、より具体的なクラスを派生させることができます。

  4. 多態性の実現: 継承により、多態性(Polymorphism)が実現され、異なるクラスのオブジェクトが同じメソッドを異なる方法で実行できます。

Pythonでは、継承を実現するために、新しいクラスを定義する際にクラス名の後にスーパークラス名を指定します。以下は、Pythonでの継承の基本的な例です:

python
class Animal: def speak(self): return "Animal speaks" class Dog(Animal): # DogクラスがAnimalクラスを継承 def speak(self): # Animalクラスのspeakメソッドをオーバーライド return "Dog barks" class Cat(Animal): # CatクラスがAnimalクラスを継承 def speak(self): # Animalクラスのspeakメソッドをオーバーライド return "Cat meows" dog = Dog() cat = Cat() print(dog.speak()) # Dogクラスのspeakメソッドが呼び出される print(cat.speak()) # Catクラスのspeakメソッドが呼び出される

この例では、Animal クラスが基底クラスであり、Dog クラスと Cat クラスがそれを継承しています。各サブクラスはスーパークラスの speak メソッドをオーバーライドして独自の実装を提供しています。

継承により、コードの再利用、階層的なクラスの構築、多態性の実現など、多くの利点が得られます。