とがみんブログ
大学院の中退を決断し、徹底的に自分と向き合い就職活動をする中で、心理学や脳科学に興味を持つ。挙げ句の果てに、この世界の仕組みにも興味を持つ。そんなとがみんの考えや経験を綴ったブログです。
swift

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

どうも。とがみんです。

現在セブ島のNexSeedというプログラミングと英語を勉強できる学校で、エンジニア留学卒業後、ティーチングアシスタントとして、インターンをしています。

>エンジニア留学|NexSeed

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

>【Swift4】オブジェクト指向プログラミングとは

今回の記事では、オブジェクト指向プログラミングの要素の一つである「継承」とは何か、そのメリットは何かといった事を説明していこうかと思います。

 

継承とは

継承とは、クラス(設計図)のプロパティ(性質)、メソッド(動作・振る舞い)を、新しく作成するクラスに引き継ぐ事です。

例えば、「車クラス」を継承して、「救急車クラス」を作成したとします。

この場合、「救急車クラス」は、「車クラス」が持つ、プロパティ(エンジン、タイヤ)やメソッド(走る、止まる)を引き継いでいます。

なので、「救急車クラス」に「車クラス」に書かれている内容をいちいち書かなくても、「救急車クラス」は「車クラス」のプロパティやメソッドを使うことができます。

以前のオブジェクト指向プログラミングの記事で説明したように、上記の設計図を書くと以下のようになります。

>【Swift4】オブジェクト指向プログラミングとは

上記コードのclass Ambulance:Carの部分でCarクラスを継承したAmbulanceクラスを作成しています。

次に、救急車クラスをインスタンス化し、車が持つメソッドを呼び出してみます。

車クラスが持つrunメソッドを救急車のオブジェクトから呼び出したところ、ちゃんと実行されました。

このように、クラス(設計図)のプロパティ(性質)、メソッド(動作・振る舞い)を新しく作成するクラスに引き継ぐ事を「継承」と言い、継承前のプロパティやメソッドを扱うことができます。

次に、継承のメリットについて説明していきます。

スポンサードリンク

「継承」のメリット

継承のメリットについて、主に2つあります。

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

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

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

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

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

それぞれの車一台一台の設計図を書く事は非常に手間がかかります。

例えば、救急車、バス、トラックの設計図を書かないといけないとします。

それぞれの設計図をコードで書くと以下のようになります。

 

上記の「救急車クラス」、「バスクラス」、「トラッククラス」には下記のコードが共通して書かれています。

3つならまだしも、10個、100個と作成するオブジェクトがどんどん増えていった時、同じコードを何度も何度も書くことは非常に手間がかかります。

なので、それら全てに共通する部分だけを、あらかじめクラスとして作っておき、

それを「継承」する事で、同じ内容を何度も何度も書く必要がなくなります。

共通部分を「車クラス」として作成し、それを継承して「救急車クラス」、「バスクラス」、「トラッククラス」を書いたものが下記です。

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

仕様変更の際、変更箇所を減らすことができる

2つ目のメリットについて、上記100台の車のオブジェクトを作った後、

仕様変更があって、すべての車に、より性能の良いエンジンを使う事になったとします。

もし、車一台一台に対して、設計図を作成していた場合、車の台数分書き換えないといけません。

しかし、共通部分を抜き出したクラスを継承してクラスを書いていた場合、

その共通部分が書かれたクラスの中身を一箇所変更するだけで、全てに適応させる事ができます。

上記の例では、車クラスの中の「エンジン」を「高性能エンジン」に変更するだけで、その設計図を継承したクラスに適用させることができます。

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

変更箇所を減らす事ができます。

まとめ

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

「継承」とは、既存のクラスの属性を新しく作成するクラスに引き継ぐ事。

そしてそのメリットは、

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

の2つあります。

オブジェクト指向プログラミングにおいて、「継承」はよく使うと思うので、しっかり抑えておきたいところです。

また、下記がインターンをしているNexSeedという「プログラミング×英語」の勉強ができるセブにある学校です。

起業志向の人や、フリーランスを目指す人等、意識の高い人が多く、自分も良い刺激をもらっています。

留学を考えているけど、英語だけじゃ物足りないと感じる人、起業やフリーランスとして働くことを見据えている人は是非見てみてください!

スポンサードリンク