継承を使うことで、既存のクラスを基に新しいクラスを作成することができます。新しいクラスは既存のクラスの属性とメソッドを引き継ぎ、さらに独自の機能を追加することができます。これにより、コードの再利用性が向上し、オブジェクト指向プログラミングの重要な概念である多態性(ポリモーフィズム)が実現できます。
継承を行うには、新しいクラスの定義時に、基底クラス(親クラス)を括弧内に指定します。新しいクラス(子クラス)は、親クラスの属性とメソッドを継承します。
=
pass
=
=
# 出力: ワンワン
# 出力: ニャー
この例では、Animal クラスを親クラスとして、Dog クラスと Cat クラスを作成しています。それぞれの子クラスは、親クラスの speak メソッドをオーバーライドしています。
子クラスでは、親クラスで定義されたメソッドを上書き(オーバーライド)することができます。オーバーライドすることで、親クラスのメソッドを再定義し、子クラス固有の振る舞いを実装できます。
=
=
=
# 出力: Pochi がワンワンと吠えています
# 出力: Tama がニャーと鳴いています
この例では、Dog クラスと Cat クラスで speak メソッドをオーバーライドしています。
子クラスでコンストラクタ(__init__ メソッド)をオーバーライドする場合、親クラスのコンストラクタを呼び出すことができます。これにより、親クラスの初期化処理を引き継ぐことができます。
=
pass
=
=
# 出力: Pochi (Shiba Inu) がワンワンと吠えています
この例では、Dog クラスのコンストラクタで super().__init__(name) を呼び出すことで、親クラスの __init__ メソッドを実行しています。
継承は多段階にわたって行うことができます。あるクラスを継承したクラスをさらに継承することで、継承の階層を作成できます。
=
pass
=
=
=
# 出力: Pochi (Shiba Inu) がワンワンと吠えています
# 出力: True
この例では、Animal クラスを Mammal クラスが継承し、さらに Dog クラスが Mammal クラスを継承しています。
ポリモーフィズムは、異なるクラスのオブジェクトが同じインターフェースを共有し、インターフェースを通じて異なる動作を実装できる特性です。これにより、コードの柔軟性と拡張性が向上します。
=
pass
=
=
# 出力: Pochi がワンワンと吠えています
# 出力: Tama がニャーと鳴いています
この例では、make_animal_speak 関数が Animal クラスのインスタンスを受け取り、ポリモーフィズムを利用して speak メソッドを呼び出しています。
この章では、Pythonの継承について学びました。継承を使用することで、コードの再利用性を高め、新しいクラスを既存のクラスの機能を基に作成することができます。次の章では、ポリモーフィズムについてさらに詳しく学び、オブジェクト指向プログラミングの強力な特性を理解しましょう。