C++の常識

派生クラス


基本クラスと派生クラス

 例えば、果物を示すクラスFruit1があったとします。

  class Fruit1 {
      int apple;
  };
  

 これによく似たFruit2というクラス(下記)が必要になったとします。

  class Fruit2 {
      int apple;
      int orange;
  };
  

 このようにFruit1とFruit2はよく似てます。ほとんど同じなのに、もう一度同じような定義を書くのは無駄に見えます。

 あるクラスにメンバーを追加・修正して新しいクラスを作るとき、継承という機能を使います。継承を使えば、同じ変数や関数を繰り返し宣言する無駄を省くことができます。

 新しいクラスの元になるクラスを基本クラスと言います。また、基本クラスから作られる新しいクラスを派生クラスと言います。

注意

 上図では矢印の向きが逆に見えるかもしれません。オブジェクト指向では、派生クラスから基本クラスに向かって矢印を引き、継承関係を表します。

派生クラスの宣言

 派生クラスを宣言するには、クラス名の後にコロン(:)を付け、その後に基本クラス名を付けます(下記)。

  class 派生クラス名: 基本クラス名 {
  
      ・・・・・・・

  };
  

 ここでは、Fruit2をFruit1から作るので、次のように宣言します。

  class Fruit2: Fruit1 {
      ・・・・・・・

  };
  

 この段階でFruit2はFruit1のすべてのメンバーを自動的に持つことになります。したがって、宣言することなくappleを持ちます。

 Fruit2にorangeを追加するには次のように記します。

  class Fruit2: Fruit1 {
      int orange;

  };
  

これでFruit2はappleとorangeを持つことになりました。

publicな継承

 派生クラスを宣言するとき、基本クラス名の前にpublicを付けるとpublicな継承になります。

  class 派生クラス名: public 基本クラス名 {
  
      ・・・・・・・・

  };
  

 基本クラスを継承して派生クラスを作るとき、通常はpublicな継承を使います。publicを使うとアクセス制御が変化しません。すなわち、基本クラスのpublicメンバーは、派生クラスでもpublicメンバーになります。しかし、publicな継承を使っても、基本クラスのprivateメンバーは、privateメンバーのままです。