プログラミングとコナン

【Python入門】初めてのプログラミング(継承)

こんにちわ!この記事はPythonの初学者のための内容となっております。
今回は継承についての記述です。

  • 継承って何!?
  • 継承の具体的な使い方がわからない
  • 継承を使った少し長めの実践的コードを見てみたい

という方向けの内容です。

また、前回は、アクセス制御についての記述でした。

【Python入門】初めてのプログラミング(アクセス制御)

それでは頑張っていこう!

プログラミングスクールに関しては下の記事で詳しく記述しています。

こちらで紹介しているスクールは、すべて無料期間がある優良なスクールのみで、特徴を明確にし、読者のニーズに絞って丁寧に解説しました。初めての一歩として、無料説明会に参加してみてください。

【全スクール無料体験あり!】プログラミングを学びたい人におすすめのスクール5選!

継承の基本

継承とは

継承(Inheritance)とは、同じ性質を再利用することで、楽にプログラムを記述する方法です。

例えば、「動物」クラスがあったとします。その中には、「犬」クラスや「猫」クラス、などが含まれるでしょう。さらに細かく「犬」クラスの中には「チワワ」クラスや「トイプードル」クラスなどがあってもいいでしょう。

多重継承について

クラスが構造化になっていて、継承を複数回行う多重継承は今回は扱いません。

最も簡単な継承のコードを記述します。
継承する場合、クラス名の後に、継承先のクラスをかっこ書きすることで継承が可能です。

継承の考え方

継承の考え方の例として、抽象的から具体的になっていくのが基本になります。

「動物クラス」(スーパークラス)ではメソッド「eat」と、「sleep」が定義されているとしましょう。次に、「犬」クラス(サブクラス)では、「bark」、「sit」。猫クラス(サブクラス)では、「punch」、「meow」など、それぞれの特性をサブクラスで詳しく記述していきます。

一部画像の引用

サブクラスとして定義された「Dog」や「Cat」クラスには、定義されたメソッドの性質に加えて、動物として基本的な「eat」、「sleep」もサブクラスに含まれます。

つまりスーパークラスである、「Animals」に書かれているメソッドや変数は、サブクラスで継承した場合、再定義する必要がなくなります。これによって、効率的にコードを記述することが出来ます。

ちなみに、画像内の矢印の向きにも一応意味があります。継承の場合、サブクラス(子クラス)からスーパークラス(親クラス)へ矢印が向きます。

コードの記述例

今回は、スーパークラスである、「Animals」のみコンストラクタが設定されています。そして、サブクラスである、「Dogs」、「Cats」は、「Animals」を継承しているため、継承元のメソッドや、メンバ変数を再定義しなくても利用できるようになります。例を見ていきましょう!

※すべてのコードを一つにすると実行できます。

スーパークラス:「Animals」

メンバ変数は「name」のみです。メソッドは、画像の通り、「eat」、「sleep」。ゲッターメソッドに「getName」を準備しています。

サブクラス:「Dogs」

サブクラス「Dogs」には、コンストラクタはありません。

サブクラス:「Cats」

サブクラス「Cats」にも、コンストラクタはありません。
継承では、「super()」を用いることで、スーパークラスのメソッドを呼び出すことが出来ます。

メイン関数

注意してみていきたいのは、メイン関数の出力結果と、これがエラーが出ることなく実行できるという点ですね。

サブクラス「Dogs」、「Cats」には、コンストラクタは設定されていないのですが、インスタンスを生成する際に引数が一つあります。これは、継承先のスーパークラス「Animals」に「name」を引数とした、コンストラクタがあるからですね。

また、今までのオブジェクト指向型プログラミング同様に、スーパークラスのインスタンスを生成することも可能です。これによって、自由に継承を使いこなすことが出来ます。

全体コード

オーバーライド

カタカナ多いぜ!!

オーバーライド(override)とは、上乗りという意味です。すなわち、プログラムでは上書きするということです。同じ名前のメソッドを記述したいと思うときがあると思います。そのような時でも問題なく同じ名前でメソッドを定義できます。

オーバーライドの簡単な例を示します。

メソッド名が同じ「Print」になっていますが、サブクラスのオブジェクトを生成しているので、サブクラスのメソッドが実行されました。このように、メソッドを上書きすることをオーバーライドといいます。詳しい説明は別の記事で記述しています。

また、オーバーライドと合わせて使いたい手法がキーワード引数です。
参考にしてみてください。

【Python入門】初めてのプログラミング(継承2)雇用管理プログラムの作成 【Python入門】初めてのプログラミング(関数の利用・可変長引数とキーワード引数)

まとめ

今回は、継承を学習しました。継承では、抽象的から具体的に考え方のパラダイムシフトをします。継承は、同じような処理を再び記述するのは面倒なので、可能ならば再利用しようという考え方です。

スーパークラス(親)のメソッドを利用する場合は「super()」を用いることでアクセスが可能です。また、インスタンスを生成するときに、コンストラクタもスーパークラスのメンバ変数をもとに記述します。オーバーライドという考え方も、継承と似て非なる考え方ですので注意が必要です。

次回の継承2では、今回の継承の応用的な使い方を紹介していきます。テーマは、雇用管理プログラムの作成です。簡単に説明すると、あるお店では、アルバイトと店長とマネージャーがいます。これらのクラスは、すべて従業員に含まれますので、「Employee」が親クラスとなります。

全ての従業員には、名前や従業員番号などがあるでしょう。一方で、各役職によってお給料などが変わる部分を継承を用いて記述します。お楽しみに!

このような考え方で少し複雑な内容を扱っていきたいと思います。

本日の理解度調査

今日の最後に理解度調査をします!!
どうすれば正しくなるのか考えてみてね!!

Q. どのような出力結果になるか考慮せよ。

正解は。。。

わかったかな??正解出来たら今回の項目は完璧だね!!

最後まで記事を読んでいただきありがとうございます!

昔、自分が参考にしていたプログラミングについての書籍を紹介します。

プログラミングスクールに関しては下の記事で詳しく記述しています。

こちらで紹介しているスクールは、すべて無料期間がある優良なスクールのみで、特徴を明確にし、読者のニーズに絞って丁寧に解説しました。初めての一歩として、無料説明会に参加してみてください。

【全スクール無料体験あり!】プログラミングを学びたい人におすすめのスクール5選!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA