プログラミング PR

【完全版】オブジェクト指向の継承についてわかりやすく解説

inheritance
記事内に商品プロモーションを含む場合があります

本記事ではオブジェクト指向の継承についてなるべくわかりやすく解説しております。

エンジニアの副業におすすめ!

エンジニア、デザイナー向けの週2、3日のお仕事紹介【ITプロパートナーズ】【公式HP】https://itpropartners.com/

  • 週3日〜の案件を数多く扱っている
  • エンド直ゆえに高単価案件が多い
  • フルリモート案件など、柔軟な働き方に対応した案件が多い
  • トレンド技術を取り入れた魅力的な案件が豊富にある
  • 専属エージェントが希望に沿った案件を紹介してくれる

\ 最短60秒で登録可能! /
無料会員登録
案件を探す

engineer-market-value-diagnosis
【3分でできる】エンジニアとしての市場価値診断エンジニアとしての市場価値を診断するには?本記事ではエンジニアにとって市場価値を把握しておくことの重要性や市場価値診断ツールの紹介などしております。...
engineer-sidejob-agent
【土日リモート可】エンジニアにおすすめの副業エージェント21選エンジニアにおすすめの副業エージェントは?本記事では数ある副業案件を扱うエージェントの中から現役エンジニアである筆者が厳選して21社紹介しております。副業に興味のあるエンジニアは要チェックです。...

オブジェクト指向の継承とは?わかりやすく解説

system-kanshi

継承とは既存のクラス(親)に基づき新たなクラス(子)を定義するための機能です。

継承とは?

継承という機能を使うことで、親クラスのメンバ(データ・メソッド)は自動的に引き継がれるため、子クラスでは差分だけを記述すればOK。

継承とは、既存のクラスに基づき新たなクラスを定義するための機能。

コピペではなく継承を使う理由をわかりやすく解説

sre

継承を利用することで子クラスでは差分のみ記述すれば良いということでしたが、それならコピー&ペーストではダメなのでしょうか?

継承の目的

コピペの問題点は大きく以下の2つ。

  1. 修正に手間がかかる
  2. 管理が難しくなる

修正に手間がかかる

例えば親クラスに変更があったとしたらどうでしょうか?当然コピペの場合は子クラスも変更する必要が出てくるでしょう。

これはクラス数が増えるほど手に負えない状態となることが容易に想像つくかと思います。

管理が難しくなる

また、コピペで新たなクラスを作成するとソースコードの多くが重複することになります。

これによりプログラムの可読性が悪くなりメンテナンスしづらくなってしまうのです。

コピー&ペーストで新たなクラスを作成すると、修正に手間がかかるし、プログラムの管理が難しくなってしまう。 

継承を使う本当の目的をわかりやすく解説

search

前章のコピペ問題を解決できる点も継承を使う理由にはなりますが、継承を使う目的というのはしっかり別に存在します。

継承の目的はある2つのクラスにis-aの関係があることを示すことです。

”is-aの関係”とは、子クラスis-a親クラス(子クラスは親クラスの一種である)という関係。

このis-aの関係を示すことによりポリモーフィズムやその他オブジェクト指向の特性を活かせるようになります。

polymorphism
オブジェクト指向の多態性(ポリモーフィズム)についてわかりやすく解説オブジェクト指向の多態性(ポリモーフィズム)について初心者向けにわかりやすく解説。多態性/ポリモーフィズムとは、同じ命令を送ったにも関わらずそれぞれが独立した固有の処理を行うという特性を指します。...

なお、ポリモーフィズムについては上の記事で解説しているため、本記事を読み終えた後に是非こちらも読んでみてください。

継承の目的は、ある2つのクラスにis-aの関係があることを示すこと。

継承の実現方法についてわかりやすく解説

engineer

そんな継承を実現するために各プログラミング言語に特有の文法が用意されています。

例えばJavaなら以下のようにクラスを定義することで継承を実現。

class クラス名 extends 親クラス名{
    親クラスとの差分
}

 

継承の実現方法については「学んでいる言語+継承」などで検索してみるのが最も手っ取り早いかと思いますので各自調べてみてください。

継承の実現方法はプログラミング言語によって異なるが基本的な考え方は同じ。

継承関係の表現方法

good-money

継承によって作られた2つのクラスの関係を”継承関係”といい、その継承関係を図で表現する場合は以下のようになります。

継承関係

継承関係図における矢印の向きは、クラスが汎化していく方向を表しており、直感とは逆であることに気をつけてください。

継承によって作られた2つのクラスの関係を”継承関係”といい、継承関係図における矢印の向きは子から親、つまり汎化の方向を示している。

オーバーライドによる上書き

graph

親クラスから継承された子クラスで、同じメンバ名(データ・メソッド名)だけど違う挙動を実現したいという場合に用いるのがオーバーライド。

オーバーライドとは、親クラスのメンバを子クラス側で上書きすることを指します。

オーバーライド

なお、上書き(オーバーライド)されては困るという場合は別途用意されている文法(Javaならfinal)を用いて制御することが可能です。

オーバーライドとは、親クラスのメンバを子クラス側で上書きすること。

オブジェクト指向の継承とは?【まとめ】

継承まとめ
  • 継承とは既存のクラスに基づき新たなクラスを定義するための機能。
  • コピー&ペーストで新たなクラスを作成すると修正に手間がかかるし、プログラムの管理が難しくなってしまう。
  • 継承を使う本当の目的は、ある2つのクラスにis-aの関係があることを示すこと。
  • 継承の実現方法はプログラミング言語によって異なるが基本的な考え方は同じ。
  • 継承によって作られた2つのクラスの関係を”継承関係”という。
  • 親クラスのメンバを子クラス側で上書きすることをオーバーライドという。

本記事で紹介した内容はあくまで触りの部分だけなので、今後の学習が大切になります。

以下の記事でオブジェクト指向について学べる書籍を紹介しているので、より深い内容を学びたいという方は記事を覗いてみてください。

object-pic
【2024年最新】オブジェクト指向のおすすめ本5選オブジェクト指向を学ぶのにおすすめの本を初心者向けに紹介。どの本も良書なので一冊を繰り返し読み返すことでオブジェクト指向をマスターすることができるでしょう。...

ここまで記事を読んでいただきありがとうございました。本記事がオブジェクト指向の継承の理解促進に少しでもお役に立てたのなら幸いです。

shukatu
【新卒】ITエンジニア志望の学生におすすめ就活サイト・エージェント10選エンジニア志望だがIT企業の探し方がよくわからないし、就活を有利に進めるためのサポートを受けたい。そんな学生におすすめしたいのが新卒就活サイト・エージェント。本記事では新卒就活サイト・エージェントの中でも特におすすめしたいものを厳選して紹介しております。...
second-new-graduate-engineer
【第二新卒向け】未経験からエンジニアを目指す人におすすめの転職エージェント5選本記事ではそんな数ある転職エージェントの中でも特に、第二新卒で未経験からエンジニアを目指す人におすすめの転職エージェントを厳選して5社紹介していきたいと思います。...
engineer-market-value-diagnosis
【3分でできる】エンジニアとしての市場価値診断エンジニアとしての市場価値を診断するには?本記事ではエンジニアにとって市場価値を把握しておくことの重要性や市場価値診断ツールの紹介などしております。...
engineer-sidejob-agent
【土日リモート可】エンジニアにおすすめの副業エージェント21選エンジニアにおすすめの副業エージェントは?本記事では数ある副業案件を扱うエージェントの中から現役エンジニアである筆者が厳選して21社紹介しております。副業に興味のあるエンジニアは要チェックです。...
freelance-engineer-agent
【2024年最新】フリーランスエンジニアにおすすめのエージェント26選独立後に案件を安定的に獲得できるか不安・・・。そんなエンジニアの方におすすめなのがフリーランスエージェントです。本記事では数あるエージェントの中でも特におすすめしたいエージェントを7社ご紹介いたします。...
こちらの記事もおすすめ!

COMMENT

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