本記事ではオブジェクト指向の継承についてなるべくわかりやすく解説しております。
【公式HP】https://flxy.jp/
- 90%以上がフルリモート案件
- 週1〜3日程度の副業向け案件が多い
- 自身のライフスタイルに合った働き方ができる
- 希望に合わせてコーディネーターが最適な提案をしてくれる
- 定期開催される交流会や勉強会で人脈を広げることができる
\ 最短60秒で登録可能! /
目次
オブジェクト指向の継承とは?わかりやすく解説
継承とは、既存のクラス(親)に基づき新たなクラス(子)を定義するための機能です。
継承という機能を使うことで、親クラスのメンバ(データ・メソッド)は自動的に引き継がれるため、子クラスでは差分だけを記述すればOK。
継承とは、既存のクラスに基づき新たなクラスを定義するための機能。
コピペではなく継承を使う理由をわかりやすく解説
継承を利用することで子クラスでは差分のみ記述すれば良いということでしたが、それならコピー&ペーストではダメなのでしょうか?
コピペの問題点は大きく以下の2つ。
- 修正に手間がかかる
- 管理が難しくなる
修正に手間がかかる
例えば親クラスに変更があったとしたらどうでしょうか?当然コピペの場合は子クラスも変更する必要が出てくるでしょう。
これはクラス数が増えるほど手に負えない状態となることが容易に想像つくかと思います。
管理が難しくなる
また、コピペで新たなクラスを作成するとソースコードの多くが重複することになります。
これによりプログラムの可読性が悪くなりメンテナンスしづらくなってしまうのです。
コピー&ペーストで新たなクラスを作成すると、修正に手間がかかるし、プログラムの管理が難しくなってしまう。
継承を使う本当の目的をわかりやすく解説
前章のコピペ問題を解決できる点も継承を使う理由にはなりますが、継承を使う目的というのはしっかり別に存在します。
継承の目的はある2つのクラスにis-aの関係があることを示すことです。
”is-aの関係”とは、子クラスis-a親クラス(子クラスは親クラスの一種である)という関係。
このis-aの関係を示すことによりポリモーフィズムやその他オブジェクト指向の特性を活かせるようになります。
なお、ポリモーフィズムについては上の記事で解説しているため、本記事を読み終えた後に是非こちらも読んでみてください。
継承の目的は、ある2つのクラスにis-aの関係があることを示すこと。
継承の実現方法についてわかりやすく解説
そんな継承を実現するために各プログラミング言語に特有の文法が用意されています。
例えばJavaなら以下のようにクラスを定義することで継承を実現。
class クラス名 extends 親クラス名{
親クラスとの差分
}
継承の実現方法については「学んでいる言語+継承」などで検索してみるのが最も手っ取り早いかと思いますので各自調べてみてください。
継承の実現方法はプログラミング言語によって異なるが基本的な考え方は同じ。
継承関係の表現方法
継承によって作られた2つのクラスの関係を”継承関係”といい、その継承関係を図で表現する場合は以下のようになります。
継承関係図における矢印の向きは、クラスが汎化していく方向を表しており、直感とは逆であることに気をつけてください。
継承によって作られた2つのクラスの関係を”継承関係”といい、継承関係図における矢印の向きは子から親、つまり汎化の方向を示している。
オーバーライドによる上書き
親クラスから継承された子クラスで、同じメンバ名(データ・メソッド名)だけど違う挙動を実現したいという場合に用いるのがオーバーライド。
オーバーライドとは、親クラスのメンバを子クラス側で上書きすることを指します。
なお、上書き(オーバーライド)されては困るという場合は別途用意されている文法(Javaならfinal)を用いて制御することが可能です。
オーバーライドとは、親クラスのメンバを子クラス側で上書きすること。
オブジェクト指向の継承とは?【まとめ】
- 継承とは既存のクラスに基づき新たなクラスを定義するための機能。
- コピー&ペーストで新たなクラスを作成すると修正に手間がかかるし、プログラムの管理が難しくなってしまう。
- 継承を使う本当の目的は、ある2つのクラスにis-aの関係があることを示すこと。
- 継承の実現方法はプログラミング言語によって異なるが基本的な考え方は同じ。
- 継承によって作られた2つのクラスの関係を”継承関係”という。
- 親クラスのメンバを子クラス側で上書きすることをオーバーライドという。
本記事で紹介した内容はあくまで触りの部分だけなので、今後の学習が大切になります。
以下の記事でオブジェクト指向について学べる書籍を紹介しているので、より深い内容を学びたいという方は記事を覗いてみてください。
ここまで記事を読んでいただきありがとうございました。本記事がオブジェクト指向の継承の理解促進に少しでもお役に立てたのなら幸いです。
- 90%以上がフルリモート案件
- 週1〜3日程度の副業向け案件が多い
- 自身のライフスタイルに合った働き方ができる
- 希望に合わせてコーディネーターが最適な提案をしてくれる
- 定期開催される交流会や勉強会で人脈を広げることができる
\ 最短60秒で登録可能! /