解説
似たクラスがいくつもあると、共通部分を何度も書くのは無駄です。継承を使うと、共通の性質を「親クラス」にまとめ、各クラスは差分だけ書けます。
class Cat(Animal): と書くと、Cat は Animal を継承し、Animal の __init__(name の保存)をそのまま受け継ぎます。一方 speak() は子クラスで上書き(オーバーライド)して、それぞれ違う鳴き方にできます。
リストに別々のクラスのインスタンスを混ぜても、同じ a.speak() で呼び出せば、それぞれのクラスのメソッドが動きます。これを「ポリモーフィズム(多態性)」と呼び、共通の操作で異なる振る舞いを引き出せます。
継承は『再利用』の代表例で、大きなプログラムを整理する強力な道具です。
書き方
class 子クラス(親クラス): — 親の属性・メソッドを受け継ぐ(継承)。 ・オーバーライド: 親と同じ名前のメソッドを子で定義すると上書きされる。 ・__init__ を定義しなければ親の __init__ をそのまま使う。 ・異なるクラスでも同名メソッドを共通の書き方で呼べる(多態性)。
書いて動かす
この回の課題
Animal を親クラスにして Cat と Dog を継承で作り、speak() をそれぞれ上書きして、ループでまとめて鳴かせてみよう。
コードはあなたの端末の中だけで動きます(サーバーには送られません)。進み具合もこのブラウザに保存されます。
自分のPCでも続けてみませんか
Windows版 InsightPy は Python を同梱しているので、環境構築なしで同じコードを書いて実行できます。 書いたコードを保存しておけるほか、ステップ実行で変数の変化を1行ずつ確かめられます。 個人の学習や私的な目的でのご利用は、31日目以降も無料です(スクリプトの保存は10本まで)。 このブラウザ版の学習センターも、引き続き無料でお使いいただけます。