Pythonの継承とは?親クラス・子クラスの関係とメソッドのオーバーライドを初心者向けに解説
生徒
「Pythonのオブジェクト指向で“継承”って出てきました。でも、親クラスとか子クラスって何のことですか?」
先生
「継承は、すでにあるクラスの機能を引き継いで、新しいクラスを作る仕組みです。」
生徒
「引き継ぐ…?プログラミング未経験でも理解できますか?」
先生
「大丈夫です。家族の例えを使いながら、親クラスと子クラスの関係を順番に見ていきましょう。」
1. Pythonの継承とは何か
Pythonの継承とは、あるクラスの機能や情報を、 別のクラスがそのまま引き継いで使える仕組みのことです。 オブジェクト指向プログラミングの中でも、とても重要な考え方です。
難しく聞こえるかもしれませんが、考え方はとても単純です。 すでに作った便利なクラスを、もう一度最初から作り直すのは大変です。 そこで、そのクラスを土台として、新しいクラスを作ります。
Pythonの継承を使うことで、同じコードを何度も書かずに済み、 プログラムが読みやすく、管理しやすくなります。
2. 親クラスと子クラスの関係
継承では、元になるクラスを親クラス、 親クラスを引き継いで作られるクラスを子クラスと呼びます。
家族で例えると、親クラスは親、子クラスは子どもです。 子どもは親の特徴を受け継ぎますが、 それぞれ違った個性を持つこともあります。
Pythonの子クラスも同じで、 親クラスの変数やメソッドを使いつつ、 独自の機能を追加できます。
3. 継承の基本的な書き方
Pythonで継承を行うには、 クラス名の後ろに丸かっこを書き、 その中に親クラス名を指定します。
class Animal:
def speak(self):
print("鳴き声を出します")
class Dog(Animal):
pass
この例では、DogクラスがAnimalクラスを継承しています。 まだ何も書いていませんが、 DogクラスはすでにAnimalクラスの機能を持っています。
4. 継承によって使えるようになる機能
子クラスは、親クラスで定義されたメソッドを そのまま使うことができます。
dog = Dog()
dog.speak()
鳴き声を出します
Dogクラスにはspeakメソッドを書いていませんが、 親クラスのAnimalから引き継いで使えています。 これが継承の基本的な動きです。
5. 子クラス独自の機能を追加する
継承の便利な点は、 親クラスの機能を使いながら、 子クラス専用の機能を追加できることです。
class Dog(Animal):
def run(self):
print("走ります")
このように、子クラスに新しいメソッドを書くことで、 親クラスにはない動きを持たせられます。 親と子の役割分担がはっきりします。
6. メソッドのオーバーライドとは
メソッドのオーバーライドとは、 親クラスで定義されているメソッドを、 子クラス側で上書きすることです。
難しい言葉ですが、意味は単純です。 「親と同じ名前のメソッドを、子クラスで作り直す」 それだけです。
これにより、同じメソッド名でも、 子クラスでは違う動きをさせることができます。
7. オーバーライドの具体例
class Dog(Animal):
def speak(self):
print("ワンワンと鳴きます")
dog = Dog()
dog.speak()
ワンワンと鳴きます
同じspeakメソッドですが、 Animalクラスとは違う結果が表示されています。 これがメソッドのオーバーライドです。
8. 継承とオーバーライドを使うメリット
Pythonの継承を使うことで、 共通部分を親クラスにまとめられます。 これにより、コードの重複を減らせます。
また、オーバーライドを使えば、 必要な部分だけを子クラスで変更できます。 全体を書き直す必要はありません。
親クラスと子クラスの役割を意識することで、 プログラムの構造が自然に整理されます。 これが、Pythonのオブジェクト指向プログラミングで 継承が重視される理由です。