SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Cでわかるオブジェクト指向

【第3回】継承


  • このエントリーをはてなブックマークに追加

 それでは前回に引き続き、C言語によるOOPを通して、オブジェクト指向の基本的な概念について解説していきたいと思います。今回は、前回の予告通り「継承(inheritance)」についての解説です。

  • このエントリーをはてなブックマークに追加

オブジェクト指向の基本 - 継承

継承とは

 オブジェクト指向が何であるのかイマイチ良く分かっていない人でも、オブジェクト指向といえば「継承」というものが出てくるということをご存知の人は多いのではないでしょうか。実際はそんなことはないのですが、オブジェクト指向であれば「継承」を使うものという風に誤解している人も少なくないようです。

 「継承」とは一体どのようなものなのでしょうか。まずは、いつもの通り、Wikipediaを見てみることにしましょう。

 継承(けいしょう、inheritance:インヘリタンス)とはオブジェクト指向を構成する概念の一つ。あるオブジェクトが他のオブジェクトの特性を引き継ぐ場合、両者の間に「継承関係」があると言われる。(中略)既存クラスの機能、構造を共有する新たなクラスを派生することができ(サブクラス化)、そのようなクラスは「親クラス(スーパークラス)を継承した」という。具体的には変数定義や操作(メソッド)などが引き継がれる。

 出典:フリー百科事典『ウィキペディア(Wikipedia)』

 継承とは、既存のクラスの構造をベースに新しいクラスを定義する、クラスの再利用の仕組みです。1つのクラスだけをベースにできる仕組みを「単一継承」、複数のクラスをベースにできる仕組みを「多重継承」と呼びます。また、元になるクラスを親クラス(もしくはスーパークラス)、新しく定義されるクラスを派生クラス(もしくはサブクラス)と呼びます。継承を利用することで、派生クラスはメッセージ/メソッド/属性といった親クラスの構造を受け継ぐことができます。派生クラスは親クラスと同一の性質を受け継ぐため、派生クラスのインスタンスは親クラスのインスタンスでもあると考えることができます。

継承の概念
継承の概念

 継承のメリットは、「すでにあるコードを再利用しつつ、そこに新しく機能を実装していく」というプログラミング手法を可能にしてくれることです。繰り返しを避けること、そしてコードを再利用することに、日々頭を悩ませているCプログラマであれば、上記のメリットを十分に理解してもらえるものと思います。

 継承は決してオブジェクト指向の必須技術ではありませんが(実際、継承を持たないオブジェクト指向言語も存在しています)、上記のメリットとともに、OOPにおける再利用性、拡張性のためのさまざまなアプローチのための有効な手段として、広く活用されている仕組みです。

 それでは、前回のコードをベースに継承の概念をCで実現していきましょう。なお、今回実現するのは、単一継承の概念とします。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
Cによる継承の実現

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Cでわかるオブジェクト指向連載記事一覧

もっと読む

この記事の著者

島田 浩二(Ruby札幌)(シマダ コウジ)

1978年生まれ。電気通信大学電気通信学部情報工学科卒業後、メーカ系ソフトウェア会社にて携帯電話の開発業務に従事した後、2006年より札幌にてフリーのプログラマとして活動。2009年7月に株式会社えにしテックを設立し、同社代表取締役に就任。 日本Rubyの会理事、一般社団法人LOCAL理事、Ruby札幌主宰。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3708 2009/03/17 13:04

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング