プログラミングの概念

【Swift】オブジェクト指向プログラミング「継承」について

どうも、とがみんです。

以前の記事で、オブジェクト指向プログラミングについて説明しました。


今回の記事では、オブジェクト指向プログラミングの要素の1つである「継承」というものについて紹介していきます。

継承とは

「継承」とは、継承元の設計図(クラス)の属性(プロパティ)、動作(メソッド)を継承先のクラスに引き継ぐ事です。

「継承」をすることによって、継承元(親クラス)のあらゆる情報を継承先(子)に引き継ぐことができます。

例えば、救急車クラスを作成したいとします。

以下のように「車クラス」があり、「救急車クラス」にそれを継承することによって、「救急車」クラスに直接書かれていないプロパティやメソッドを使用することができます。

「救急車の設計図」には、「タイヤ」や「エンジン」といったプロパティ「走る」や「止まる」といったメソッドが書かれていませんが、

継承元の「車の設計図」にはそれが書かれているので、救急車の設計図からインスタンス化したオブジェクトもそれらのプロパティを持ち、メソッドも扱うことができます。

救急車は「走る」ことができます。

このように、継承することによって、継承先のクラスから作成されるオブジェクトは、継承元のクラスが持つプロパティを持ち、そのメソッドを扱うことができるようになります。

Swiftで上記の図の状態をコードで書くと、以下のようになります。

継承のメリット

継承のメリットは以下の2つあります。

  • プログラムを書く量を減らせる
  • 仕様変更の際、変更箇所を減らせる

それぞれについて説明していきます。

プログラムを書く量を減らすことができる

クラスを継承する事によって、プログラムを書く量を減らす事ができます。

例えば、車100台のオブジェクトを作らないといけない。しかも、バスや救急車、その他いろんな種類の車があるといった状況を思い浮かべてください。

それぞれ一台一台設計図を書いて行くと非常に手間がかかります。

例えば、「救急車」「バス」「トラック」の設計図を書くとします。

それらをそのまま書くと、以下のようになります。

それら全ては「車」であるので、それぞれには共通した部分があります。

この共通部分を抜き出し、「車クラス」として作成し、「継承」します。

継承することによって、上記のコードを、以下のように書き換えることができます。

共通部分をまとめた車クラス

車クラスを継承することで、「救急車クラス」、「バスクラス」、「トラッククラス」を書いたものが以下です。

このように、共通部分をまとめて、それを継承することによって、同じコードを何度も書く必要がなくなるので、コードの量を減らすことができます。

コードを書く量が減れば、それだけ、コードが読みやすくなり、可読性も上がります。

使用変更の際、変更箇所を減らせる

2つ目のメリットとして、使用変更があった際に変更箇所を減らし、手間を省けるといったメリットがあります。

例えば、すべての車の「エンジン」を「新型高性能エンジン」に変更したいと考えます。

共通項を抜き出し、継承していなかった場合は、全ての設計図に対して変更を加えないといけないですが、

継承していた場合、「車クラス」の「エンジン」の部分を「新型高性能エンジン」に書き換えるだけですみます。

このように、共通部分を抜き出したクラスをあらかじめ作り、それを継承する事で、仕様変更があった場合に、変更箇所を減らす事ができます。

まとめ

オブジェクト指向プログラミングにおける「継承」について説明しました。

以下にこの記事の要点をまとめます。

要点

「継承」とは、継承元の設計図の属性、動作を継承先のクラスに引き継ぐ事。

そのメリットは、

  1. プログラムを書く量を減らせる
  2. 使用変更の際変更箇所を減らせる

はい。