継承の使い方

継承の使い方

クラスにちょっとメソッドやプロパティを追加したい場合があるかと思います。そのような場合、「継承」という方法を使って実現できます。クラスの性質の一つである継承について解説します。

継承

継承は、すでに作成したクラスに少し付け加えたクラスを作りたい場合に使います。例えば、行列の和を計算するクラスがあるとします。そして、行列の差を計算する命令も含んだクラスを作りたいとします。そのときに継承を使って、行列の和を計算するクラスに差の命令を付け加える形でつくります。

では、試しにプログラムを組んで継承を理解していきましょう。

プログラム

#include <iostream>
using namespace std;

class A{
	int i;
  public:
	void set_i(int n);
	void show_i();
};

class B:public A{
	int j;
  public:
	void set_j(int n);
	void show_j();
};

void A::set_i(int n){
	i=n;
}

void A::show_i(){
	cout<<i<<"\n";
}

void B::set_j(int n){
	j=n;
}

void B::show_j(){
	cout<<j<<"\n";
}

int main(void){
	B ob;
	ob.set_i(2);
	ob.set_j(3);
	ob.show_i();
	ob.show_j();
	return 0;
}

実行すると以下のようになります。

2
3

解説

継承したクラスの定義は

class クラス名: public 継承するクラス名{ };

となります。

public以外にもprivateも使えます。publicにすると、継承するクラスで、親クラスのpublicかprotectedのメソッドやプロパティを使用できるようになります。一方、privateにすると継承するクラスのメソッドやプロパティを継承クラスが使用できなくなります。

サンプルでは、クラスAを継承してクラスBを定義しています。クラスBはクラスAをpublicにより継承しているので、クラスAのpublic(もしくはprotected)のメソッドである

  • set_i
  • show_i

を利用できます。しかし、クラスBではクラスAのpublicではないiを利用することができません。

ob.set_i(2);
ob.set_j(3);

でiとjにそれぞれ2と3を代入します。そして、

ob.show_i();
ob.show_j();

でiとjを表示します。

著者:安井 真人(やすい まさと)