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を持つことになりました。
class 派生クラス名: public 基本クラス名 { ・・・・・・・・ }; |
基本クラスを継承して派生クラスを作るとき、通常はpublicな継承を使います。publicを使うとアクセス制御が変化しません。すなわち、基本クラスのpublicメンバーは、派生クラスでもpublicメンバーになります。しかし、publicな継承を使っても、基本クラスのprivateメンバーは、privateメンバーのままです。